默认情况下,使用Zend Router的默认路由

时间:2011-01-25 08:33:58

标签: php zend-framework

如何配置Zend_Controller_Router默认使用默认路由?无论出于何种原因未知,它都使用当前路线。

这引起了一些恼人的路由问题,我不想编辑数百个链接以明确使用默认路由是添加一个自定义路由的合理解决方案。

2 个答案:

答案 0 :(得分:0)

你的问题并不明显,令人困惑,我会尝试。

我假设您不是指Zend_Controller_Route,而是实际上是在谈论您的观点中生成的链接。

您可以像这样使用baseUrl()

<a href="<?=$this->baseUrl("about-us")?>">About Us</a>

您可以像这样设置Bootstrap中的baseUrl

Zend_Controller_Front::getInstance()->setBaseUrl("/");

如果您在本地工作,可能需要将其设置为此类

Zend_Controller_Front::getInstance()->setBaseUrl("/my-app/public");

在您的视图中使用baseUrl()现在将使用该路径来建立您的所有网址。请记住,您必须将链接包含在baseUrl()中才能实现此目的。

url()帮助程序对此没有用,它用于执行诸如分页之类的事情,您希望维护请求对象的当前参数。

希望有所帮助。

答案 1 :(得分:0)

来自Matthew Weier O'Phinney:

  

你引用的逻辑是在内   assemble()方法。 assemble()可能   无论是否有路由都可以调用   发生了。默认情况下   假设是没有路由名称   提供,当前匹配的路线   被利用 - 如果匹配的话   从未执行过(或没有匹配的路线),   将使用'默认'路线。

     

使用当前的理由   匹配的路线通常是你   将在同一架构中路由    - 例如,如果你在RESTful范例内,那么你的大多数都是   链接将在当前   资源。如果我们要关注你的   建议使用“默认”   没有指定路线的路线(at   至少,这就是我如何解释你的意思   说),因为Rest_Route不是   默认路由,每次调用   汇编()需要使用   路线名称 - 其他人会   嘲笑导致“头痛。”

     

就个人而言,我更喜欢明确   并且始终指定路线名称;   这样我就知道我到底是什么路线   在assemble()期间进行目标定位   使调试更容易。

听起来唯一的解决方案是为每个链接设置路由以使用'default'而不是将其保留为NULL。