【问题标题】:Kohana 3.2 routing issueKohana 3.2 路由问题
【发布时间】:2014-10-01 21:07:06
【问题描述】:

我已经设置了路由,以便大多数类都以标准controller/action 样式调用。但是对于我的前端,我不希望用户看到正在调用的操作,因此所有前端页面都有自己的控制器并使用索引操作。这些是我在引导程序中的路由器:

Route::set('normal', '<controller>(/<action>(/<arguments>))', 
    array(
        'arguments'     => '.*'
    ))
    ->defaults(array(
        'controller'    => 'admin',
        'action'        => 'index',
    ));

Route::set('default', '(<controller>(/<arguments>))', 
    array(
        'arguments'     => '.*',
    ))
    ->defaults(array(
        'controller'    => 'home',
        'action'        => 'index',
    ));

我目前有三个前端页面,主页、about_us 和服务。如果我不通过 URL 传递任何参数,它们都可以很好地工作,但是如果我尝试通过 URL 将参数传递到参数中,就会出现问题。在服务中,只有action_index() 来显示页面,它会检查任何参数,并根据参数显示结果。但是,如果我尝试浏览到 /services/1 以传入 1 作为参数,我会收到此 404 错误:

Kohana_HTTP_Exception [ 404 ]: The requested URL services/1 was not found on this server.

它只是使用第一条路线,正常。一旦它找不到动作,它甚至不会尝试使用第二条路线,这将起作用。如果我交换路由的顺序,那么它可以工作,但是我所有使用第一个控制器的其他类都停止工作,因为我的所有操作都作为参数传递给action_index()

我怎样才能让它工作?为什么当第一条路线行不通时,小花不去第二条路线?

【问题讨论】:

  • 试试这个语法:Route::set('normal', '(/&lt;controller&gt;(/&lt;action&gt;(/&lt;arguments&gt;)))',Route::set('default', '(/&lt;controller&gt;(/&lt;arguments&gt;))',

标签: url-routing kohana kohana-3.2


【解决方案1】:

您不需要为每个路由创建控制器。您可以创建自定义路由(路由名称)并指定控制器和操作名称。阅读文档以获得进一步的解释。 Routing

对于参数试试这个:

Route::set('default', '(<controller>(/<arguments>))', 
    ->defaults(array(
        'controller'    => 'home',
        'action'        => 'index',
    ));

【讨论】:

  • 除了参数的规则之外,这不是和我已经拥有的完全一样吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多