[英]routing at codeigniter doesn't work
我正在盯着學習codeigniter(我正在使用3.0.0版),但是在嘗試使用參數進行路由時遇到了麻煩
在文件route.php中,我有:
$route['admin/orders'] = 'admin_orders/index';
$route['admin/orders/(:any)'] = 'admin_orders/index';
$route['admin/orders/getAll'] = 'admin_orders/getAll';
$route['admin/orders/getLast'] = 'admin_orders/getLast';
$route['admin/orders/delete/(:any)'] = 'admin_orders/delete'
;
在admin_orders.php中,我有:
public function delete(){
$id = $this->uri->segment(4);
echo "ok $id";
}
並在視圖中:
<a href="'.site_url("admin").'/orders/delete/3'.'" class="btn btn-info">Delete</a>
但是,當我按Delete應用程序時,將重新加載頁面,如果我嘗試不使用/(:any),該函數將加載並顯示消息,並且其他路由有效
當然,我做錯了什么,如何使用Codeigniter 3使用參數加載一個函數?
您使用:any
順序是錯誤的,因為這很可能先於其余的匹配。 即使不是這樣,為了安全起見也應該在更通用的最后一項中列出,因為當路由器通過規則工作時,如果說“確定”匹配,它將停止,並且如果首先是更通用或通用的規則,那么它將永遠無法到達具體的。 正如最佳實踐的規則一樣,應該在最具體的地方列出事情,然后在更通用的地方列出事情。 這就是為什么else在標准條件邏輯中(如果很明顯)出現在if和ifelse之后的原因,但是在這種情況下,很容易忽略這樣的簡單規則。
另請參閱https://ellislab.com/codeigniter/user-guide/general/routing.html
重要的是
(:num)將匹配僅包含數字的段。 (:any)將匹配包含任何字符的句段。
注意:路由將按照定義的順序運行。 較高的路線將始終優先於較低的路線。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.