Laravel - 如何通过资源路由将变量传递给控制器?
Posted
技术标签:
【中文标题】Laravel - 如何通过资源路由将变量传递给控制器?【英文标题】:Laravel - How to pass a variable to controller through resource route? 【发布时间】:2017-08-09 11:33:47 【问题描述】:我已经在 Laravel 应用的web.php
中定义了这个资源,
Route::resource('Student', 'StudentCtrl');
我有一个包含元文件名称的变量,
$metaFile = 'student_meta.json';
我想将$metaFile
传递给StudentCtrl
,这样我就可以在那里捕捉到文件名。
我正在使用 Laravel 5.4。
谢谢。
【问题讨论】:
你的问题没有意义,你是从 URL 传递一个变量吗?如果是这样,请阅读资源完整的路由,如果不是(我怀疑),您可以将该变量放在控件本身中,为什么要尝试将其放在路由中? 这个变量是从哪里来的? 【参考方案1】:只需将变量传递给 url,就可以了。
如果它的 get
请求将被路由到 StudentCtrl@show
如果它的 put
请求将被路由到 StudentCtrl@update
如果它的 delete
请求将被路由到 StudentCtrl@destroy
等等。
您所要做的就是定义表单的方法。 GET
,POST
,PUT/PATCH
,DELETE
.
看看here。
【讨论】:
【参考方案2】:从路由器向控制器传递单个变量仅适用于单一 HTTP 请求方法。
参考这里:https://***.com/a/50405137/9809983
对于完整的资源路由,可以向该资源下的所有视图发送一个固定值,如果您正在尝试这样做的话
在控制器中
public function __construct(Request $request)
$action_array = $request->route()->getAction();
$json_file['json_file'] = "student_meta.json";
$new_action_array = array_merge($action_array, $json_file);
$request->route()->setAction($new_action_array);
现在您可以访问资源控制器下所有视图中的值,例如,
可见
request()->route()->getAction('json_file')
在 Laravel 5.6 中测试并完美运行
【讨论】:
以上是关于Laravel - 如何通过资源路由将变量传递给控制器?的主要内容,如果未能解决你的问题,请参考以下文章
通过laravel中的javascript函数在路由中传递两个变量