【问题标题】:kohana hide action name in url for particular actionkohana 在特定操作的 url 中隐藏操作名称
【发布时间】:2013-12-04 10:25:53
【问题描述】:

我有这样的默认路线:

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

我还有带有动作添加和动作显示的文章控制器。

我需要的是在 url 中隐藏显示(动作名称),但在 url 中保留添加(动作名称)。

我已尝试添加另一条路线:

Route::set('article_show', 'article(/<id>)')
    ->defaults(array(
        'directory' => 'frontend',
        'controller' => 'article',
        'action' => 'show',
    ));

但只有显示操作适用于所有网址。 我需要 article/id url 工作和 article/add 工作,但 article/show/id 不应该工作。

【问题讨论】:

    标签: action kohana routes


    【解决方案1】:

    我认为这应该可行:

    Route::set('article_show', 'article((/<action>)/<id>)', array('action' => 'add', 'id' => '\d+'))
        ->defaults(array(
            'directory' => 'frontend',
            'controller' => 'article',
            'action' => 'show',
        ));
    

    我还建议您根据需要用尽可能多的路由替换默认路由(仅作为示例,不要使用)。

    【讨论】:

    • 谢谢。这很好用。如果我也需要添加另一个动作,比如编辑?如何将 url 中具有动作名称的动作数组添加到此路由?是否有任何选项可以使 /article/show/id 不起作用,或者这样可以吗?
    • 该数组包含参数必须匹配的正则表达式。所以正则表达式'add'只会匹配字符串'add'。正则表达式 'add|edit' 将匹配字符串 'add' 或 'edit'。 kohanaframework.org/3.3/guide/kohana/routing#regex
    • "是否有任何选项可以使 /article/show/id 不工作,或者这样可以?"删除默认路由。然后根据需要制作尽可能多的特定路线以使您的应用程序正常工作。然后 /article/show/id 将不起作用。 包罗万象的路线很难看,避开它们。
    猜你喜欢
    • 1970-01-01
    • 2016-05-23
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多