Zend Router链接子域的问题

时间:2011-07-05 12:48:41

标签: zend-framework mod-rewrite routing subdomain zend-route

我有一个$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匹配。

但是当我使用Zend_View的url helper或Zend_Router的用于问题路径的汇编函数组装一个新url时,它只返回路径,而不是像以下那样的域:

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

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

我该怎么做?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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