我有一個CI routes.php如下。如何動態創建codeigniter路由?
$route['default_controller'] = "site";
$route['404_override'] = 'site';
$route['admin'] = 'admin';
$route[':any'] = 'site/user';
需要的事情是當任何用戶名(我將與數據庫查詢)與像URL類型 - localhost/CIproj/username
那麼它應該去site/user
控制器。
如果'管理員'在URL中有 - localhost/CIproj/admin
它將轉到admin
控制器(索引函數)。網址將更改爲localhost/CIproj/admin/dashboard
。
所以我得到的錯誤是當我去localhost/CIproj/admin
,我得到登錄屏幕。但登錄後會去admin/dashboard
。這是我重定向到site/user
的地方。
然後我試着用下面的一個。
$route['user/(:any)'] = 'site/user';
現在一切正常。但網址將如 - localhost/CIproj/user/username
。
所以問題是,有沒有什麼辦法,我不必在URL中寫user
。訪問者可以在URL中輸入任何內容。
localhost/CIproj/anything
如果anything== username from database
它會去site/user
。
如果anything== admin or any of its page
它將去相應的控制器。
否則404pagenotfound.php。
注意:Admin是一個包含許多控制器的巨大模塊。所以我不認爲我應該爲這裏的每個管理員控制器寫路由。
我想你沒有得到的問題。正如你所建議的那樣,我將獲得用戶,但管理員部分我無法獲得。如果管理員登錄並且URL更改爲「admin/dashboard」,它將始終重定向到「site/user /」。 – user1638279
在您檢查用戶名參數的控制器中,您可以額外檢查如果用戶名==管理員而不是將其重定向到管理員/儀表板 – DShah