【问题标题】:Codeigniter route pattern with prefix带前缀的 Codeigniter 路由模式
【发布时间】:2017-12-27 07:47:26
【问题描述】:

我正在研究 Codeigniter 3 路由机制,我的应用程序是多分支的,我尝试了像 app.com/p/branch_id/controller/method/param1/param2/etc 这样的谷歌邮件 url 模式,但在某些情况下,它不需要前缀 p/branch_id/ 用于管理员或全局设置。我认为我的规则无效。

$route['p/(:num)/(:any)'] = '$2';
$route['p/(:num)/(:any)/(:any)'] = '$2/$3';
$route['p/(:num)/(:any)/(:any)/(:any)'] = '$2/$3/$4';
$route['p/(:num)/(:any)/(:any)/(:any)/(:any)'] = '$2/$3/$4/$5';

I want achieve
/p/1/booking -> route to controller booking
/p/1/booking/create -> route to controller booking action create()
/p/1/booking/view/1 -> route to controller booking action view($id)

also same thing when user visit
/booking -> route to controller booking
/booking/create -> route to controller booking action create()
/booking/view/1 -> route to controller booking action view($id)

$route['p/(:num)/(:any)'] = '$2'; 仅路由索引控制器时,我如何编写可能参数数量未知的规则。

【问题讨论】:

    标签: php codeigniter routes


    【解决方案1】:

    我相信它会起作用。

    $route['p/(:num)/(:any)'] = 'booking/action/$1/$2';
    $route['p/(:num)/(:any)/create'] = 'booking/create/$1/$2';
    $route['p/(:num)/(:any)/view/(:num)'] = 'booking/view/$1/$2/$3'; //$3 is record no.
    

    加法

    或者,如果您想将动作作为动态变量。

    $route['p/(:num)/(:any)'] = 'booking/defaultAction/$1/$2';
    $route['p/(:num)/(:any)/(:any)'] = 'booking/defaultAction/$1/$2'; // here in default action you need to add condition that if its create then execute create functionality. or if its view then execute view funcitonality
    

    【讨论】:

    • 但是我必须在控制器中指定所有可能的方法,我有/booking/validate//booking/ajax_get_bla_bla, etc...,我希望 CI 只识别 URL 的前缀,在前缀之后,就像往常一样对待..
    • 好吧,在这种情况下,您可以在预订令牌后制作(:any) = action 变量,并且在 basecontroller 构造函数中需要检查该变量中的内容,如果它创建然后执行创建函数,或者如果它的视图然后检查另外一个参数作为记录 ID 等等。
    • 所以我不能只用 URL 路由模式解决这个问题?我必须覆盖 CI 的基本控制器?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    相关资源
    最近更新 更多