diff --git a/module/VuFind/config/module.config.php b/module/VuFind/config/module.config.php index e9aa7eba06b73805012a38f62672225d899e3a78..9ce63af369be176a5ab028f439f19b4936951c7d 100644 --- a/module/VuFind/config/module.config.php +++ b/module/VuFind/config/module.config.php @@ -416,6 +416,9 @@ $config = array( $logger->setConfig(\VuFind\Config\Reader::getConfig()); return $logger; }, + 'VuFind\RecordRouter' => function ($sm) { + return new \VuFind\Record\Router($sm->get('VuFind\RecordLoader')); + }, 'VuFind\SMS' => 'VuFind\SMS\Factory', 'VuFind\Translator' => function ($sm) { $factory = new \Zend\I18n\Translator\TranslatorServiceFactory(); @@ -450,7 +453,6 @@ $config = array( 'VuFind\CacheManager' => 'VuFind\Cache\Manager', 'VuFind\Mailer' => 'VuFind\Mailer', 'VuFind\RecordLoader' => 'VuFind\Record\Loader', - 'VuFind\RecordRouter' => 'VuFind\Record\Router', 'VuFind\SearchSpecsReader' => 'VuFind\Config\SearchSpecsReader', 'VuFind\SessionManager' => 'Zend\Session\SessionManager', 'VuFind\WorldCatConnection' => 'VuFind\Connection\WorldCat', diff --git a/module/VuFind/src/VuFind/Record/Router.php b/module/VuFind/src/VuFind/Record/Router.php index eb5cafa4cccd3c065c73afb37586478269ed9c2f..c38b74db0880e2428da3569bce170c4e684384a2 100644 --- a/module/VuFind/src/VuFind/Record/Router.php +++ b/module/VuFind/src/VuFind/Record/Router.php @@ -38,6 +38,23 @@ namespace VuFind\Record; */ class Router { + /** + * Record loader + * + * @var \VuFind\Record\Loader + */ + protected $loader; + + /** + * Constructor + * + * @param \VuFind\Record\Loader $loader Record loader + */ + public function __construct(\VuFind\Record\Loader $loader) + { + $this->loader = $loader; + } + /** * Get routing details for a controller action. * @@ -75,12 +92,13 @@ class Router if (isset($config->Collections->collections) && $config->Collections->collections ) { - if (is_object($driver) - && true === $driver->tryMethod('isCollection') - ) { + if (!is_object($driver)) { + list($source, $id) = explode('|', $driver, 2); + $driver = $this->loader->load($id, $source); + } + if (true === $driver->tryMethod('isCollection')) { $route['route'] = 'collection'; } - // TODO: make routing work correctly in non-object $driver case } } return $route;