Проблема цепочки Zend Router с поддоменом - PullRequest
2 голосов
/ 05 июля 2011

У меня есть $siteRoute для поддоменов:

$siteRoute = new Zend_Controller_Router_Route_Hostname(
    ':siteSlug.test.com',
    array(
        'module' => 'site',
    ),
    array('siteSlug' => '^(programming|photography|gaming)$')            
);
$router->addRoute('site', $siteRoute);

, и у меня есть $ questionRoute для необычных вопросов

$questionRoute = new Zend_Controller_Router_Route(
    'questions/:questionId/:questionSlug',
    array(
        'controller' => 'question',
        'action' => 'view',
        'questionSlug' => ''
    )
);
$router->addRoute('question', $siteRoute->chain($questionRoute));

все эти два маршрута совпадают без проблем.например: programming.test.com соответствует и отправляет для site маршрута и programming.test.com/questions/132/test-headline соответствует для question маршрута.

Но когда я собираю новый URL-адрес с помощью помощника URL Zend_View или функции ассемблирования Zend_Router для маршрута вопроса,он возвращает только путь, а не домен, как:

echo $questionRoute->assemble(array('questionId' => 1, 'questionSlug' => 'testing-testing', 'siteSlug' => 'programming'));

эхо questions/1/testing-testing не programming.test.com/questions/1/testing-testing.

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 17 мая 2012

Попробуйте этот кусок кода, он отлично работает для меня (если вам нужно больше примеров, скажите мне)

$router = Zend_Controller_Front::getInstance()->getRouter();
echo $router->assemble(array('questionId' => 1, 'questionSlug' => 'testing-testing', 'siteSlug' => 'programming'), 'question');
0 голосов
/ 05 июля 2011

Маршрутизатор заботится только о маршрутизации пути, то есть берет путь и сопоставляет его с вашими модулями, контроллерами и действиями. Он практически не знает о предметной области. Assemble создает только маршрут (путь) на основе ваших аргументов.

echo $_SERVER['HTTP_HOST'] . '/' . $questionRoute->assemble(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...