Laravel 5.2:在控制器方法中获取表单字段

时间:2016-06-30 17:03:38

标签: php laravel laravel-5

我有以下表格:

{!! Form::open(['action' => 'PublicController@showProfile','method' => 'post', 'class' => 'form-horizontal']) !!}
{!! Form::token(); !!}
    <input type="text" class="form-control" name="from">
    <span class="input-group-addon"> to </span>
    <input type="text" class="form-control" name="to"> 
    <button type="submit" class="btn blue">Query</button>
{!! Form::close() !!}

在我的控制器中,我得到这样的表单字段:

public function showProfile(Request $request)
{
    $to = $request->get("to");
    $from = $request->get("from");
    $giftReceived = App\GiftSent::whereBetween('created_at', [$from, $to])->get();
    dd($from);
    return view('user.profile',compact('giftReceived'));
}

在上面的代码中dd($from)null

我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

首先,正如您的评论中所述,您正在使用 Route :: get 并将表单提交为 POST ,这显然是错误的。所以,你应该得到 MethodNotAllowedException

所以,请将线路更改为

{!! Form::open(['action' => 'PublicController@showProfile','method' => 'GET', 'class' => 'form-horizontal']) !!}

在任何情况下,不要使用Laravel的请求类,而是使用辅助函数request()

所以,基本上,它应该像

public function showProfile() {
  $from = request()->get('from');
  $to = request()->get('to');
  dd($from, $to);
}

现在一切都应该正常工作:)

答案 1 :(得分:0)

如果您的帖子数据正在发送到控制器,您可以访问以下值:

// Get all request data via method POST.
$requestData = Request::instance()->request->all();
dd($requestData['from']);
dd($requestData['to']);