2013-03-17 178 views
2

我在想laravel框架開發的最佳方法。大部分時間和教程都是通過的,例如:Dayle的Laravel CodeHappy,example as what you see here is the same with his book。大多數Q &堆棧溢出,我注意到大多數開發人員也把所有的請求處理放在route.php。我可以知道這對於雲類的大型應用程序代碼結構有什麼好處嗎?在我的概念中,RESTful是爲api設計的,而我們可以使用控制器來檢測它的獲取,發佈,放置或刪除。像這樣Laravel路由與控制器

if ($_POST) 
    { 
     // Try and login user 
    } 
    else 
    { 
     // Show login form 
    } 

但是沒有太多的教程/樣本可用。我錯了嗎?如果把所有東西都改成控制器,我就不知道該怎麼做。如驗證&從控制器獲取輸入。有人有這個想法嗎?請指教。如果示例顯示是最好的;)謝謝。

回答

6

這個問題確實沒有確切的答案。無論您使用路線或控制器(或兩者,這是完全可以接受的,大多數人在做什麼)取決於您的應用程序。一般來說,如果您的路線似乎有許多業務邏輯,您應該考慮將它們「轉換」爲控制器,因爲控制器更容易維護和忽略,特別是對於大型應用程序。

最後,它可能是最好的與控制器的動力通過結合calling a controller using a route路由的靈活性,例如:

Route::get('welcome', '[email protected]'); 

在這裏,您撥打home控制器上的index行動。

This是一篇不錯的文章,如果你想了解更多關於Route vs. Controller的討論。

+0

兩者都是正確的;)但這篇文章中的文章鏈接,解決了我腦海中的所有問題。謝謝@AW。和Adrenaxus。 – 1myb 2013-03-18 01:29:00

4

您可以從控制器內訪問所有相同的類,您可以在連接到路由的匿名函數內訪問這些類。

舉例來說,如果你有這樣的路線:

Route::post('register', function(){ 
    $user = new User(); 
    $user->username = Input::get('username'); 
    $user->password = Hash::make(Input::get('password')); 

    $user->save(); 

    return Redirect::to('home'); 
}); 

你可以用這個代替它:

Route::post('register', array('uses' => '[email protected]')); 


class Auth_Controller extends Base_Controller { 

    public static $restful = true; 

    public function post_register() { 
     $user = new User(); 
     $user->username = Input::get('username'); 
     $user->password = Hash::make(Input::get('password')); 

     $user->save(); 

     return Redirect::to('home'); 
    } 
} 

...並得到相同的結果,但有一點組織,隨着應用程序的增長而變得尤爲重要。

+0

有趣!根據你的意見。如果我有我的應用程序接口前景,我應該使用寧靜還是行動,並且很快也會開發API?謝謝 – 1myb 2013-03-17 17:04:29

+1

我通常使用一個寧靜的控制器並使用Route :: any(...),但最終你可以根據自己的喜好選擇控制權。我認爲對於一般情況,您通常會碰到相同的URI,並根據請求類型對該URI作出反應,以便將請求類型處理放置在控制器中。對我來說,使用action _ *()代替RESTful控制器的情況非常罕見,但我對框架也相當陌生。 – ARW 2013-03-17 17:38:18