mod 重写 - Zend 路由器与子域的链接问题



我有一个子域$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路线的匹配和调度,question路线的programming.test.com/questions/132/test-headline匹配。

但是当我使用Zend_View的 url 助手或Zend_Router的 issue route 组装函数组装一个新 url 时,它只返回路径,而不是像这样的域:

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

回声questions/1/testing-testing不是programming.test.com/questions/1/testing-testing.

我该怎么做?

试试这段代码,对我来说很好用(如果你需要更多的例子告诉我(

$router = Zend_Controller_Front::getInstance()->getRouter();
echo $router->assemble(array('questionId' => 1, 'questionSlug' => 'testing-testing', 'siteSlug' => 'programming'), 'question');

路由器只关心路由路径,即获取路径并将其与您的模块、控制器和操作相匹配。它基本上没有域意识。组装仅根据您的参数创建路由(路径(。

echo $_SERVER['HTTP_HOST'] . '/' . $questionRoute->assemble(...);

最新更新