【问题标题】:set default controller or exclude something from the url zend framework设置默认控制器或从 url zend 框架中排除某些内容
【发布时间】:2012-06-23 17:07:17
【问题描述】:

我把我能找到的关于 Zend_Controller_Router_Route 的所有东西都涂红了,但我无法找到如何设置默认控制器或从 url 中排除某些内容,例如:

www.example.com/test/controler/action

如何忽略“测试”?

现在我总是将“测试”作为默认控制器..

谢谢, 文齐斯拉夫·安杰洛夫

【问题讨论】:

    标签: php zend-framework frameworks


    【解决方案1】:

    这可以在 /public 子目录的 .htaccess 中完成。

    像这样添加另一个 RewriteCond:

    RewriteCond %{REQUEST_URI} !^/test* [OR]
    

    这应该可以解决。

    【讨论】:

    • 不客气。如果我的帖子解决了你的问题,请采纳。
    【解决方案2】:

    在您的示例网址中,如果您使用默认路由,'test' 将是模块。

    www.example.com/test/controler/action //module = test, controller = controler, action = action
    

    您可以使用以下几行在 application.ini 中为所有这三个指定默认值:

     resources.frontController.defaultcontrollername = 'index'
     resources.frontController.defaultaction = 'index'
     resources.frontController.defaultmodule = 'default'
    

    您可能感兴趣的另一个可用设置:

    resources.frontController.useDefaultControllerAlways = false
    

    [编辑] 如果您确实需要从路由/请求中过滤字符串。您可能可以通过路线来做到这一点,但我对路线的了解不足以帮助您解决问题。另一个选择(除了 .htaccess)是测试和重定向。可能是这样的:

    public function preDispatch() {
           $request = $this->getRequest();
           if ($request->getController() = 'test' || $request->getAction() = 'test' || $request->getModule() = 'test' ) {
               $this->_redirect('url');
          }
        }
    

    这可以放在每个控制器中,但作为插件可能会更好。当然,您可以使用 switch() 而不是讨厌的 if() 语句。

    希望其中一位路由器专家能提供更好的解决方案。

    祝你好运……

    【讨论】:

    • 非常感谢。但是,如果我只想忽略“测试”作为默认值怎么办。我不希望“测试”成为控制器、模块或动作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多