【问题标题】:Need Help in zend framework URL Rewrite在 zend 框架 URL 重写中需要帮助
【发布时间】:2016-09-06 12:01:28
【问题描述】:

我需要在 zend 框架中重写 URL 的帮助。如果我在 URL 下方打印:

echo $this->url(array('controller'=>'guestbook','action'=>'edit','id'=>$entry->id), null, TRUE);

它会生成像这样的 url:http://localhost/guestbook/public/index.php/guestbook/edit/id/1

但是我怎样才能在zend框架中生成像:http://localhost/guestbook/public/index.php/guestbook/edit/1这样的url呢?

我不想在 URL 中出现 'id'。请帮忙。

【问题讨论】:

  • 您提出了 35 个问题,只接受了 7 个答案....!请接受您认为有帮助的答案.....

标签: zend-framework


【解决方案1】:

Zend Controller Router 将帮助您实现这一目标。

最简单的入门方法是在引导程序中添加以下内容(未经过真正测试,但它应该可以在最少的调试下工作,请参阅提供的链接,因为它解释了更多内容,使用此代码只是为了开始了解如何路由工作):

$router = Zend_Controller_Front::getInstance()->getRouter();
$router->addRoute(
    'guestbook_edit',
    new Zend_Controller_Router_Route('guestbook/edit/:id',
                                     array('controller' => 'guestbook',
                                           'action' => 'edit'))
);

【讨论】:

  • @Jimit:在 bootstrap(Bootstrap.php 文件)中添加代码,或者在 routeStartup 上制作一个带有“钩子”的插件。按照提供的链接,它将解释一切(如果没有,那么有大量关于 zend 路由如何工作以及如何实现某些事情的教程)。
【解决方案2】:

要使其正常工作,您需要定义一个自定义路由,例如称为留言簿,并制作 url 助手以将其用于您的特定 url。

例如,在您的 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);

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多