如何将参数传递给 Laravel 5 中的隐式控制器?
Posted
技术标签:
【中文标题】如何将参数传递给 Laravel 5 中的隐式控制器?【英文标题】:How to pass parameter to implicit controller in Laravel 5? 【发布时间】:2017-03-07 02:05:41 【问题描述】:在 laravel 4.2 和 laravel 5.3 中,路由中都有一个使用隐式控制器的选项。两个版本的语法相同。
Route::controller('myroute', 'myDearController');
所以 URL 将是:
http://my.domain.com/myroute/function-name/parameter1/parameter2
在 laravel 4 中,控制器如下所示:
//..... Some other controller related syntax ......
public function getFunctionName($parameter1, $parameter2)
$inputs = Input::all();
dd($inputs);
//..... Some other controller related syntax ......
但是,在 laravel 5 中,为了获取 GET 输入,它占用了一个参数位置,所以我尝试做这样的事情:
//..... Some other controller related syntax ......
public function getFunctionName(Request $request, $parameter1, $parameter2)
$inputs = $request->all();
dd($inputs);
//..... Some other controller related syntax ......
但是,URL 返回The site can't be reached
。我试着换了位置,
//..... Some other controller related syntax ......
public function getFunctionName( $parameter1, $parameter2, Request $request)
$inputs = $request->all();
dd($inputs);
//..... Some other controller related syntax ......
它不起作用。我知道我可以将Route::get('myroute/function-name/$parameter1/$parameter2', 'myDearController@getFunctionName')
行添加到路由文件中,但是除了在路由文件中明确指定之外,是否有默认方法可以这样做?
【问题讨论】:
【参考方案1】:Route::resource('myroute', 'myDearController');
如果您随后执行 php artisan route:list,您将看到所有路线的列表。
【讨论】:
【参考方案2】:对于显式路由,它应该是parameter
而不是$parameter
。
所以,
Route::get('myroute/function-name/parameter1/parameter2', 'myDearController@getFunctionName')
【讨论】:
看来你是 laravel 高手了。我需要你帮忙。看这里:***.com/questions/41047583/…【参考方案3】:您不能再使用::controller
,因此您需要为 Laravel 5 应用程序创建显式路由,并且没有默认方法可以执行 ::controller
在 4.2 中所做的事情。您可以查看Resource controllers,它允许您为 CRUD 使用一些隐式路由。
Laravel 资源路由通过一行代码将典型的“CRUD”路由分配给控制器。
【讨论】:
那条线如何表明 Route::controller 不再工作?事实上,我正在使用 Route::controller 并且它工作正常,除了传递参数的部分。 在 5.3 中它会给你Method controller does not exist
错误。以上是关于如何将参数传递给 Laravel 5 中的隐式控制器?的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 5.2 中将页面 URL 参数传递给控制器