我需要在zend框架中进行URL重写方面的帮助。如果我在URL下面打印:
echo $this->url(array('controller'=>'guestbook','action'=>'edit','id'=>$entry->id), null, TRUE);
它会生成如:http://localhost/guestbook/public/index.php/guestbook/edit/id/1
的网址但是如何在zend框架中生成类似于http://localhost/guestbook/public/index.php/guestbook/edit/1的URL?
我不希望在网址中使用'id'。请帮助。
答案 0 :(得分:3)
Zend Controller Router将帮助您实现这一目标。
最简单的入门方式是在bootstrap添加以下内容(未经过测试,但它应该以最小的debuging工作,请参阅提供的链接,因为它解释了更多,使用此代码只是为了开始了解如何路由工作):
$router = Zend_Controller_Front::getInstance()->getRouter();
$router->addRoute(
'guestbook_edit',
new Zend_Controller_Router_Route('guestbook/edit/:id',
array('controller' => 'guestbook',
'action' => 'edit'))
);
答案 1 :(得分:2)
要使其正常工作,您需要定义一个自定义路线,例如留言簿,并让网址助手将其用于您的特定网址。
例如,在application.ini中,您可以按如下方式定义它:
resources.router.routes.guestbook.route = '/guestbook/edit/:id'
resources.router.routes.guestbook.defaults.controller = user
resources.router.routes.guestbook.defaults.action = edit
resources.router.routes.guestbook.defaults.id =
resources.router.routes.guestbook.reqs.id = "\d+"
然后,您按以下方式使用url帮助程序:
echo $this->url(array('controller'=>'user','action'=>'edit','id'=>2), 'guestbook', TRUE);
希望有所帮助。