Kohana 3.2路由问题

时间:2014-10-01 21:07:06

标签: url-routing kohana kohana-3.2

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

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',
    ));

我目前有三个前端页面,home,about_us和services。如果我不通过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()

我怎样才能使这个工作?为什么当第一条路线不起作用时,Kohana不会继续第二条路线?

1 个答案:

答案 0 :(得分:-1)

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

对于论据,试试这个:

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