我正在與Laravel進行一些路由。我需要將url部分作爲參數傳遞給控制器。通過使用Laravel將參數傳遞給控制器?
我知道這是可能的:Route::get('user/{name}', function($name){});
但因爲我的所有代碼,直到如今以這種方式進行連接:Route::get('/{param}', array('uses' => '[email protected]')
我想是一致的,因此想知道是否有可能通過論證這樣的控制器?
我正在與Laravel進行一些路由。我需要將url部分作爲參數傳遞給控制器。通過使用Laravel將參數傳遞給控制器?
我知道這是可能的:Route::get('user/{name}', function($name){});
但因爲我的所有代碼,直到如今以這種方式進行連接:Route::get('/{param}', array('uses' => '[email protected]')
我想是一致的,因此想知道是否有可能通過論證這樣的控制器?
是的,這是可能的。簡單地聲明你這樣的CustomerController::index
方法:
public function index($param)
{
}
參考:http://laravel.com/docs/controllers#basic-controllers
注意,默認值是必需的可選參數。例如,
// the route
Route::get("/{param?}", array("uses"=>"[email protected]"));
// in the controller
public function index($param = null)
{
}
沒有默認值,當Laravel嘗試路由到不帶參數的方法時,您將收到「缺少參數」錯誤。
我看你只是接受了答案,但我會打提交的替代版本...
你可以注入定製服務,讓叫它UrlProvider,到控制器的構造函數。然後,只需訪問該服務即可獲取URL的相關部分。請原諒任何語法錯誤,它已經有幾年了,因爲我已經寫了任何PHP ...
public class MyController
{
private $urlP;
//dont forget to bind the UrlProvider in the IoC setup.
public __construct(UrlProvider provider)
{
$urlP = provider
}
public function Index()
{
urlP.GetUrl();
}
}
public class UrlProvider()
{
function getUrl()
{
//you can parse out the relevant part of the URL here if you need.
return Request::path();
}
}
so laravel是如此聰明,它指出功能需要參數,它傳遞給它?可能是反射能力? – gorgi93
它讀取路由配置,該配置詳細說明了它需要從URL中提取的參數,然後通過[call_user_func_array](http://php.net/manual/en/function)將找到的任何值發送給方法.CALL-用戶FUNC-array.php)。 – Kryten