我有一个子域$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(...);