考虑到Zend_Controller_Router,我有一个问题。我在我的应用程序中使用了模块化结构。该应用程序基于Zend-Framework构建。正常的路线是这样的:
/modulename/actionname/
由于我总是在我的模块中使用IndexController,因此没有必要在url中提供它。现在我可以像这样添加params:
/modulename/actionname/paramkey/paramvalue/paramkey/paramvalue
我认为这在ZF中是正常的。但在某些情况下,我不想在网址中提供一个paramkey。例如,我希望在网址中显示博客标题。当然这是针对SEO的:
/blog/show/id/6/this-is-the-blog-title
在这种情况下,blog
是模块,show
是操作。 id
是一个参数,6
是我要展示的博客帖子的ID。 this-is-the-blog-title
当然是标识为6
的博客标题的标题。问题是,如果我像这样使用路由器的assemble()
- 方法:
assemble(array('module' =>'blog',
'action' => 'show',
'id' => $row['blog_id'],
$row['blog_headline_de'] . '.html'));
网址结果为:
blog/show/id/6/0/this-is-the-blog-title.html
如您所见,0
作为键插入。但是我希望省略这个0。我通过使用blogtitle作为关键来尝试这个,如下所示:
assemble(array('module' =>'blog',
'action' => 'show',
'id' => $row['blog_id'],
$row['blog_headline_de'] . '.html' => ''));
这导致:
blog/show/id/6/this-is-the-blog-title.html/
现在省略了0
,但最后我得到了斜杠。
您是否有任何解决方案可以获取没有0
作为关键且没有结尾斜线的网址?
此致 亚历
答案 0 :(得分:2)
您可能希望为此使用自定义路线:
$router->addRoute(
'blogentry',
new Zend_Controller_Router_Route('blog/show/:id/:title',
array('controller' => 'index', 'module' => 'blog'
'action' => 'info'))
);
以路由作为第二个参数调用汇编。有关详细信息,请参阅文档的Zend_Controller_Router_Route部分(它们甚至提供汇编的示例)。
或者以更一般的方式:
$router->addRoute(
'generalseo',
new Zend_Controller_Router_Route(':module/:action/:id/:title',
array('controller' => 'index'))
);