2

我有一个$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 助手或 Zend_Router 的 assemble 函数为问题路由组合一个新 url 时,它只返回路径,而不是域,如:

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

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

我怎样才能做到这一点?

4

2 回答 2

1

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

$router = Zend_Controller_Front::getInstance()->getRouter();
echo $router->assemble(array('questionId' => 1, 'questionSlug' => 'testing-testing', 'siteSlug' => 'programming'), 'question');
于 2012-05-17T07:10:21.323 回答
0

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

echo $_SERVER['HTTP_HOST'] . '/' . $questionRoute->assemble(...);
于 2011-07-05T15:58:53.503 回答