![](/img/trans.png)
[英]How to use controller from vendor in laravel routes.php file?
[英]How to pass a second variable from routes.php to a controller in Laravel 5?
我在定义了以下路线routes.php
中Laravel 5:
Route::get('records/{id}', 'RecordController@show');
但是,我想要一条类似的路线,例如:
Route::get('masterrecord/{id}', 'RecordController@show[masterrecord=true]');
([masterrecord = true]位是发明的,不起作用)
当我打开“ masterrecord”时,我想在控制器中使用完全相同的功能(RecordController中的show函数),但是我想传递一个额外的参数(例如“ masterrecord = true”),功能上的变化。 我知道我可以引用一个不同的函数,但是我真的不想重复相同的代码。
这是什么样的事情,我想在RecordController,但我不知道如何使它发挥作用:
public function show($id, $masterrecord = false)
然后对于records/id
路由,我将masterrecord保留为false,对于masterrecord/id
路由,我将第二个标志标记为true。
有任何想法吗?
只需将值设为可选,然后默认即可设置
Route::get('masterrecord/{id}/{masterrecord?}', 'RecordController@show');
控制器:
public function show($id, $masterrecord = false) {
if($masterrecord) // only when passed in
}
您无需重复任何代码,只需拥有一个调用show
方法的主记录方法即可:
Route::get('records/{id}', 'RecordController@show');
Route::get('masterrecord/{id}', 'RecordController@showMasterRecord');
public function show($id, $master = false) {
if ($master) {
...
}
...
}
public function showMasterRecord($id) {
return $this->show($id, true);
}
如果确实需要,可以在路由定义中传递一个硬编码的值。 然后,您可以将其从路线的动作数组中拉出。 给您另一个选择。
Route::get('masterrecord/{id}', [
'uses' => 'RecordController@show',
'masterrecord' => true,
]);
public function show(Request $request, $id)
{
$action = $request->route()->getAction();
if (isset($action['masterrecord'])) {
...
}
...
}
调整命名方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.