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

时间:2017-03-17 19:15:20

标签: laravel laravel-5 laravel-routing laravel-5.4 laravel-controller

我已在Laravel app的web.php中定义了此资源,

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

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

$metaFile = 'student_meta.json';

我想将$metaFile传递给StudentCtrl,因此我可以在那里捕获文件名。

我使用的是Laravel 5.4。

感谢。

2 个答案:

答案 0 :(得分:1)

只需将变量传递给url即可。

如果get请求将被路由到StudentCtrl@show

如果put请求将被路由到StudentCtrl@update

如果delete请求将被路由到StudentCtrl@destroy

等等。

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

看看here

答案 1 :(得分:0)

只有单个HTTP请求方法才能将单个变量从Router传递到Controller。

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