【问题标题】:Kohana 3.2 Routes: Multiple DirectoriesKohana 3.2 路由:多个目录
【发布时间】:2012-02-08 18:21:13
【问题描述】:

我有一条路线:

Route::set('foo/subdir', '<directory>/<variable>/subdir/<controller>/<action>');

我想将此网址路由到以下控制器/操作:

/application/classes/<directory>/subdir/<controller>.php::action_<action>()

我已经拥有并且也需要这条路线,这使事情变得复杂:

Route::set('foo', '<controller>/<variable>/<action>');

这可能吗?

【问题讨论】:

    标签: php kohana kohana-3


    【解决方案1】:

    为什么不呢,只要在目录路由之后定义默认路由。

    Route::set('foo/subdir', '<directory>/<variable>/subdir/<controller>/<action>')
        ->defaults(array(
            'directory'     => 'default_directory',
            'controller'    => 'index',
            'variable'      => 'default_variable',
            'action'        => 'index',
        ));
    

    Kohanas 路由“本机”支持目录,无需破解任何东西。

    请注意,您的类名也必须包含目录名。

    【讨论】:

    • 造成问题的是子目录。我想将子目录附加到目录中。您上面的代码不会进入我在第二个代码 sn-p 中指定的目录。
    【解决方案2】:

    我想将子目录附加到目录

    这将在 Kohana v3.3 中使用新的 Route::filter 功能成为可能。如果不修改 Route 和/或 Request 类,目前在 Kohana 3.1 或 3.2 中无法做到这一点。

    【讨论】:

    • 我最终修改了请求类以添加该功能。
    • 有人可以发布一个如何让它工作的例子吗?它并不完全像 Kohana 文档解释的那样。
    【解决方案3】:

    使用 REGEXP 将目录和子目录捕获为 /directory/subdirectory/controller/action 匹配 Route 像 // 其中正则表达式允许您将 / 放入目录中。然后在您的 Route 类中进行少量修改以将所有 / 更改为 _

    它还没有经过测试……还没有。 ;) 但是我要...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多