簡體   English   中英

在codeigniter上的路由不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM