Я пытаюсь создать субдомен с помощью Zend Router, а затем для каждого раздела под субдоменом, например subdomain.site.com/section/. Я создаю еще один маршрут, а затем пытаюсь связать его с маршрутом субдомена. но я не знаю, как это сделать. Я прочитал всю документацию, которую я мог найти, и все форумы, но это заставляет меня разобраться в этом самостоятельно. Пока мои попытки просто принесут мне эту ошибку:
Допустимая фатальная ошибка: аргумент 2 передан в Zend_Controller_Router_Rewrite :: addRoute () должен реализовать интерфейс Zend_Controller_Router_Route_Interface, null данный, вызывается в /var/local/zend/library/Zend/Controller/Router/Rewrite.php в строке 155 и определен в / var /local/zend/library/Zend/Controller/Router/Rewrite.php в строке 93
- Автоматический выход из системы Zend после бездействия
- Укоротить определения маршрута Zend Framework
- Zend session_start дает фатальную ошибку: исключение выбрано без рамки стека Неизвестно в строке 0
- ZF2: как мне получить экземпляр ServiceManager из пользовательского класса
- Как успешно создать проект с помощью Zend Framework и PHPUnit?
- Создание индекса с помощью Elasticsearch 5.0 вызывает исключение Bad Request
со следующим кодом:
routes.b2b.type = "Zend_Controller_Router_Route_Hostname" routes.b2b.route = "sales.sitename.com" routes.b2b.defaults.module = b2b routes.b2b.defaults.controller = index routes.b2b.defaults.action = index routes.b2b_signup.type = "Zend_Controller_Router_Route_Static" routes.b2b_signup.route = "/signup" routes.b2b_signup.defaults.controller = "index" routes.b2b_signup.defaults.action = "signup" routes.b2b_login.type = "Zend_Controller_Router_Route_Chain" routes.b2b_login.chain = b2b_signup
Я не могу найти пример того, как сделать это с помощью INI-файла в сети. Все приложение написано в INI для конфигурации маршрутизации, поэтому я не могу переключить его на конфигурацию на основе массива (или XML, если на то пошло), в которой присутствует 100% примеров в Интернете.
Если бы я мог сделать это в форме массива, я мог бы просто сказать следующее:
$hostnameRoute = new Zend_Controller_Router_Route_Hostname( 'sales.sitename.com', array( 'controller' => 'index', 'module' => 'b2b', 'action' => 'index' ) ); $hostnameRoute = new Zend_Controller_Router_Route_Static( '/signup', array( 'controller' => 'index', 'module' => 'b2b', 'action' => 'signup' ) ); $chainedRoute = new Zend_Controller_Router_Route_Chain(); $chainedRoute->chain($b2b_signup)
Кто-нибудь есть идеи о том, как это сделать в INI-файле?
Вот в основном то, что вы хотите, в формате INI:
routes.b2b.type = "Zend_Controller_Router_Route_Hostname" routes.b2b.route = "sales.sitename.com" ; you could specify a default module (or anything) to use for the whole ; route chain here, like so: ; routes.b2b.defaults.module = "default" routes.b2b.chains.signup.type = "Zend_Controller_Router_Route_Static" routes.b2b.chains.signup.route = "/signup" routes.b2b.chains.signup.defaults.controller = "index" routes.b2b.chains.signup.defaults.action = "signup" routes.b2b.chains.anotherroute.route = "/something/:foo" ; etc, etc. routes.b2b.chains.anotherroute.defaults.action = "foo" routes.b2b.chains.anotherroute.defaults.controller = "index" routes.b2b.chains.anotherroute.defaults.foo = "bar" routes.b2b.chains.anotherroute.reqs.foo = '[az]+'
Это даст вам следующие маршруты: b2b-signup
и b2b-anotherroute
.
Вот некоторые важные замечания по цепочке маршрутов:
При объединении маршрутов параметры внешнего маршрута имеют более высокий приоритет, чем параметры внутреннего маршрута. Таким образом, если вы определяете контроллер на внешнем и внутреннем маршрутах, выбирается контроллер внешнего маршрута.
Названия маршрутов с родительскими / дочерними цепями всегда сцепляются с тире! Итак, как и в примере выше, b2b.chains.signup
становится маршрутом с именем b2b-signup
(который вы можете использовать для сборки URL и т. Д.).
Вы можете сохранить цепочку! Цепи цепей могут иметь цепи.
Дети цепных маршрутов не работают с подстановочными знаками. См. # ZF-6654 . Вот сообщение в блоге, в котором говорится о том, почему это не может быть большой проблемой.