【问题标题】:Laravel - How to pass a variable to controller through resource route?Laravel - 如何通过资源路由将变量传递给控制器​​?
【发布时间】:2017-08-09 11:33:47
【问题描述】:

我已经在 Laravel 应用的web.php 中定义了这个资源,

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

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

$metaFile = 'student_meta.json';

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

我正在使用 Laravel 5.4。

谢谢。

【问题讨论】:

  • 你的问题没有意义,你是从 URL 传递一个变量吗?如果是这样,请阅读资源完整的路由,如果不是(我怀疑),您可以将该变量放在控件本身中,为什么要尝试将其放在路由中?
  • 这个变量是从哪里来的?

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


【解决方案1】:

只需将变量传递给 url,就可以了。

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

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

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

等等。

您所要做的就是定义表单的方法。 GET,POST,PUT/PATCH,DELETE.

看看here

【讨论】:

    【解决方案2】:

    从路由器向控制器传递单个变量仅适用于单一 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 中测试并完美运行

    【讨论】:

      猜你喜欢
      • 2015-01-06
      • 2015-04-01
      • 2018-06-17
      • 1970-01-01
      • 2014-10-05
      • 2020-04-03
      • 2015-03-16
      • 2017-12-27
      • 2017-08-07
      相关资源
      最近更新 更多