【问题标题】:Laravel pass array in routeLaravel 在路由中传递数组
【发布时间】:2018-04-19 08:39:27
【问题描述】:

大家好,我有代码:

{{ route('data', ['min' => 12, 'max' => 123, 'week' => 1, 'month' => 123]) }}

在路线中:

Route::get('/data/{array?}', 'ExtController@get')->name('data');

在 ExtController 中:

class GanttController extends Controller
{  

public function get($array = [], 
Request $request){
   $min = $array['min'];
   $max= $array['max'];
   $week = $array['week'];
   $month = $array['month'];
}

但这不起作用,我没有得到数组中的参数。如何在控制器中获取参数?

我尝试使用函数:serialize,但我得到错误:missing required params of the route. 因为我在路由中有?

【问题讨论】:

标签: php laravel


【解决方案1】:

照你做的:

{{ route('data', ['min' => 12, 'max' => 123, 'week' => 1, 'month' => 123]) }}

路线:

Route::get('/data', 'ExtController@get')->name('data');

控制器:

class GanttController extends Controller
{  
    public function get(Request $request){
       $min = $request->get('min');
       $max= $request->get('max');
       $week = $request->get('week');
       $month = $request->get('month');
    }
}

您的数据将作为 $_GET 参数传递 - /data?min=12&max=123&week=1&month=123

【讨论】:

    【解决方案2】:

    您在错误的控制器中编写代码。

    你的代码必须是这样的:

    class ExtController extends Controller
    {  
    
    public function get()
    {
       // your code
    }
    
    }
    

    【讨论】:

      【解决方案3】:

      将数据作为查询字符串参数传递。

      将您的路线定义为

      Route::get('/data', 'ExtController@get')->name('data');
      

      在你看来

      {{ route('data', ['min' => 12, 'max' => 123, 'week' => 1, 'month' => 123]) }}
      

      在你的控制器中

      class GanttController extends Controller
      {  
          public function get(Request $request){
             $min = $request->get('min');
             $max= $request->get('max');
             $week = $request->get('week');
             $month = $request->get('month');
          }
      }
      

      【讨论】:

        【解决方案4】:

        首先需要序列化数组:

        {{ route('data', serialize(['min' => 12, 'max' => 123, 'week' => 1, 'month' => 123])) }}
        

        那么你就可以通过了:

        Route::get('/data/{array?}', 'ExtController@get')->name('data');
        

        【讨论】:

        • Missing required parameters for [Route: data] [URI: api/data/{array?}] 我有:route('data', serialize(['min' => request()->get('min'), 'max' => request()->get('max'), 'week' => request()->get('week'), 'month' => request()->get('month')]))
        • 我没有看到任何必需的参数,在该路由中排列它的可选参数。
        • dfauq 如何在前端使用请求,使用 javascript 从表单中获取数据。请求它的后端
        • 我需要在路由上传递参数。我从 javascript 加载 /data。
        • gantt.load("{{ route('data', serialize(['min' => request()->get('min'), 'max' => request()->get('max'), 'week' => request()->get('week'), 'month' => request()->get('month')])) }}");
        猜你喜欢
        • 2020-05-16
        • 2014-01-06
        • 2015-04-06
        • 2018-06-20
        • 2014-07-17
        • 2015-10-15
        • 1970-01-01
        • 2015-10-31
        • 2016-02-27
        相关资源
        最近更新 更多