如何将参数传递给 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 控制器?

在 Laravel 5.2 中将页面 URL 参数传递给控制器

Laravel 5.8:如何将两个参数传递给 Event 和 Listener

如何将隐式参数传递给隐式类

在 Laravel 5 中将多个参数传递给控制器

如何将 vue.js 值作为参数传递给刀片中的路由