Вопрос по php – Как написать цепочки маршрутизации для субдомена в Zend Framework в INI-файле маршрутизации?

5

Я пытаюсь создать поддомен с помощью Zend Router, а затем для каждого раздела поддомена, такого как subdomain.site.com/section/, я создаю другой маршрут, а затем пытаюсь связать его с маршрутом субдомена. но я не знаю как. Я прочитал всю документацию, которую смог найти, и все форумы, но это заставляет меня понять это самостоятельно. Пока что мои попытки просто дают мне эту ошибку:

Catchable fatal error: Argument 2 passed to Zend_Controller_Router_Rewrite::addRoute() must implement interface Zend_Controller_Router_Route_Interface, null given, called in /var/local/zend/library/Zend/Controller/Router/Rewrite.php on line 155 and defined in /var/local/zend/library/Zend/Controller/Router/Rewrite.php on line 93

со следующим кодом:

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-файле?

Ваш Ответ

1   ответ
11

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 = '[a-z]+'

Это даст вам следующие маршруты:b2b-signup, а такжеb2b-anotherroute.

Вот некоторые важные замечания о цепочке маршрутов:

При объединении маршрутов параметры внешнего маршрута имеют более высокий приоритет, чем параметры внутреннего маршрута. Таким образом, если вы определите контроллер во внешнем и внутреннем маршруте, будет выбран контроллер внешнего маршрута.

Родительские / дочерние цепочки имен маршрутов всегда объединяются с тире! Итак, как в примере выше,b2b.chains.signup становится маршрутом с именемb2b-signup (который вы можете использовать для сборки URL и т. д.).

Вы можете продолжать цепочку! Цепочки цепочек могут иметь цепочки.

Дети цепных маршрутов не работают с подстановочными знаками. Увидеть# ZF-6654, Здесь & APOS; sСообщение блога это говорит о том, почему это не имеет большого значения.

Error: User Rate Limit Exceeded Dan
Нет, к сожалению. Я никогда не читал ни одной книги (или книги?) О Zend Framework. Тем не менее, Zend Framework Роба Аллена в действииzendframeworkinaction.com должно быть хорошо. Однако из-за быстрых темпов развития ZF книги быстро устаревают; очень быстро. Например, ничего о цепочках маршрутов, Zend_Application или Zend_Tool не будет в этой книге.
& quot; Вы можете продолжать цепочку! Цепочки цепочек могут иметь цепочки. & Quot; Мне было интересно, какой из них является правильным: 1. rout.b2b.chains.anotherroute.chains.yetanotherroute ... 2. rout.anotherroute.chains.yetanotherroute ...
Error: User Rate Limit Exceeded

Похожие вопросы