2014-02-26 88 views
0

民間,Laravel 4:基於URI的路由

我想要做一些簡單的事情。例如,如果在我的設置導航看起來是這樣的:

http://localhost/settings/ 
http://localhost/settings/general 
http://localhost/settings/message 
http://localhost/settings/users 

這是可能以任何方式讓我的路由器知道,當它看到的設置/用戶,我想它去SettingsController @用戶?和設置/一般去SettingsController @一般

的事情是,我不希望有放下每個URL中像routes.php文件:

Route::any("settings/users", array("as" => "users", "uses" => "[email protected]")); 
Route::any("settings/general", array("as" => "general", "uses" => "[email protected]")); 

這是可能以任何方式?

回答

0

您需要使用路徑控制器在routes.php文件一樣

Route::controller('settings', 'SettingsController'); 

,並在您SettingsController定義在下面的方法。

class SettingsController extends BaseController { 

    //URL : http://localhost/settings 
    public function getIndex() 
    { 
     echo 'Index Method'; 

    } 

    //URL : http://localhost/settings/message 
    public function getMessage() 
    { 
     echo 'Message Method'; 
    } 
} 

您必須使用'get'前綴並以大寫字母開頭。欲瞭解更多信息,請查詢http://laravel.com/docs/controllers#restful-controllers

+0

謝謝Muharrem!現在完美工作。 – Tochie

+0

嗨@Muharrem,我在使用這種方法後遇到了一個挑戰。使用與上述解決方案相同的概念,當我向控制器發送ajax請求時,出現404錯誤。但是當我在瀏覽器中輸入該網址時,它可以正常工作。例如,我向http:// localhost/abc/settings/user_status發送ajax請求。其中user_status是設置控制器中的方法。這會使用ajax產生404錯誤,但在直接放入瀏覽器時有效。考慮到這個設置控制器有其他方法不被ajax調用,我該如何編寫我的路由和控制器?謝謝你的時間! – Tochie

+0

Hi @ Tochie。我認爲原因是你的ajax請求類型。如果問題在於,有兩種解決方案可以嘗試使用'GET'來更改ajax類型(更改標題或jquery方法類型),或者您可以使用後置方式更改Route Controller前綴:function postMessage()..否則,請發送給我你的ajax代碼。 –