在zend框架URL中需要帮助重写

时间:2011-03-14 12:10:52

标签: zend-framework

我需要在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'。请帮助。

2 个答案:

答案 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);

希望有所帮助。