2015-07-21 84 views
0

我盯着學習笨(我使用的是3.0.0版本),但我有一個porblem當我試圖用參數路由在笨不起作用

在文件routes.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> 

但是,當我按下刪除應用程序重新加載頁面,如果我嘗試不使用/( :任何)功能加載並顯示我的消息和其他路線工作

當然,我做錯了什麼,我怎麼可以加載一個函數與參數使用codeigniter 3?

+0

可能是您的使用順序:任何錯誤,因爲這可能會在其餘之前匹配。即使它不是應該列在更普遍的最後纔是安全的,因爲它的工作方式雖然會在它確定匹配時停止,並且如果它通常是首先它永遠不會達到特定的。正如最佳實踐規則一樣。這就是爲什麼在if和ifelse之後出現的其他問題 – ArtisticPhoenix

+0

他們的文檔頁面上有一個註釋,它說明儘可能多的https://ellislab.com/codeigniter/user-guide/general/routing.html – ArtisticPhoenix

+0

tks @ArtisiticPhoenix,你解決了我的問題 – GaF

回答

0

您的訂單使用:any是錯誤的,因爲這可能會匹配之前。即使不是應該在更一般的最後列出的事情纔是安全的,因爲當路由器按照規則工作時,它會在它確定匹配時停止,並且如果它是更一般或通用的規則,那麼它永遠不會達到具體。正如最佳做法的規則,應該列出更具體的第一個和更通用的最後一個。這就是爲什麼其他人來了,如果以後在標準條件邏輯ifelse(這是顯而易見的),但在這樣的情況下,很容易忽視簡單的規則一樣的..

也看到 https://ellislab.com/codeigniter/user-guide/general/routing.html

重要的位是:

(:num)將匹配僅包含數字的段。 (:any)將匹配包含任何字符的段。

注:路由將按照它們定義的順序運行。較高的路線總是優先於較低的路線。