【问题标题】:Kohana: Omit action from urlKohana:从 url 中省略操作
【发布时间】:2013-04-20 20:26:52
【问题描述】:

有什么方法可以默认使用 action_index 而不必在 url 中指定它?

即。

Route::set('user_profile','(<controller>(/<action>(/<id>)))')
    ->defaults(array(
        'directory' => 'public',
        'controller' => 'user',
        'action'     => 'index',
    ));

要使用它,我需要指定/users/index/1234

但我想使用/users/1234

我尝试从 Route::set() 中执行操作,但最终得到了 404 页面。

更新

现在我已经添加了这条路线(最上面的一条),我的默认路线现在似乎不起作用

Route::set('user_profile','(<controller>(/<id>))')
->defaults(array(
    'directory' => 'public',
    'controller' => 'users',  // Note I changed it to plural to match 'users/*' from your url
    'action'     => 'index',
));

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

【问题讨论】:

    标签: php routing kohana


    【解决方案1】:

    就像在 URL 中省略 &lt;action&gt; 参数一样简单,但仍保持默认值:

    Route::set('user_profile','(<controller>(/<id>))')
        ->defaults(array(
            'directory' => 'public',
            'controller' => 'users',  // Note I changed it to plural to match 'users/*' from your url
            'action'     => 'index',
        ));
    

    请注意,除非您有其他 Route 覆盖此行为,否则您的 user 控制器将只能执行 index 操作。


    编辑

    如果您的 users_profile 路由仅处理 /users 路径,那么您可以在路由中明确设置它:

    Route::set('user_profile','users(/<id>)')
        ->defaults(array(
            'directory' => 'public',
            'controller' => 'users',  // Note I changed it to plural to match 'users/*' from your url
            'action'     => 'index',
        ));
    

    这应该解决冲突的路线。

    【讨论】:

    • 这确实有效,但它似乎与另一条路线冲突。我已经更新了我的问题
    • 现在您可以将控制器名称改回Controller_Public_User,因为它在路由模式中不存在。
    猜你喜欢
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多