2014-03-19 27 views
1

我是MVC的新手(這是我第一次在真實場景中使用),我對控制器(應該)如何工作有點困惑。RESTful控制器如何在Laravel 4中工作,如何正確使用它們?

在閱讀Laravel文檔後,我得出結論:對於處理加載站點(不同站點連接在一起),頁面,管理員等一般任務,我需要RESTful控制器。

對於簡單的任務它的工作。使用起來很簡單,很有趣。我有這樣的路線:

Route::controller('admin', 'AdminController'); 

我有功能,如

public function getProduct($id) 

和它的工作。 (它被用來獲得特定產品:../admin/product/1

現在我想要更復雜的東西。像

../sites/loadsite/mysite/mypage/mysubpage/123?myoption=yes 

我該怎麼做?我該如何開始,如何解決這個問題?我是否必須使用Route::get()來處理每一件事情,或者是否有一種「更好的」方式來做到這一點?

回答

2

Laravel提供了一種用於產生用於相應的控制器方法的RESTful路由「資源控制器」助手:

http://laravel.com/docs/controllers#resource-controllers

可以使用此容易地爲給定模型創造的標準REST路線,或者,如圖所示在laravel.com提供的示例中,您可以僅限於某些路線。他們提供的表格演示給定路徑如何映射給定的動作/控制器方法。

關於你給的例子網址:../sites/loadsite/mysite/mypage/mysubpage/123?myoption=yes,我會打破這個問題分成兩個部分,網址和查詢字符串:

關於URL /sites/loadsite/mysite/mypage/mysubpage/123。這不會被許多人認爲是「RESTful」路線。而不是頁面和子頁面,你應該考慮模型,有時候還要考慮子模型。它通常被認爲最好的做法是避免深度嵌套的路線,這通常意味着任何比深度的單層更多:/model/{id}/submodel/[id]

關於在URL的結尾的查詢字符串:?myoption=yes:Laravel提供訪問由查詢字符串參數使用Input::get("Param")函數。您不必在路由中指定查詢字符串參數,只需在您的控制器方法中訪問它們即可。

相關問題