Laravel - 如何通过资源路由将变量传递给控制器?

问题描述 投票:0回答:2

我已经在 Laravel 应用程序的

web.php
中定义了这个资源,

Route::resource('Student', 'StudentCtrl');

我有一个包含元文件名称的变量,

$metaFile = 'student_meta.json';

我想将

$metaFile
传递给
StudentCtrl
,这样我就可以在那里捕获文件名。

我正在使用 Laravel 5.4。

谢谢。

php laravel laravel-routing laravel-controller
2个回答
1
投票

只需将变量传递给 url,就这样了。

如果是

get
请求将被路由到
StudentCtrl@show

如果是

put
请求将被路由到
StudentCtrl@update

如果是

delete
请求将被路由到
StudentCtrl@destroy

等等。

您所要做的就是定义表单的方法。

GET
POST
PUT/PATCH
DELETE

看看这里


0
投票

将单个变量从路由器传递到控制器仅适用于单个 HTTP 请求方法。

请参阅此处:https://stackoverflow.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 中经过测试并完美运行

© www.soinside.com 2019 - 2024. All rights reserved.