BadMethodCallException方法App \ Http \ Controllers \ TicketsController :: route不存在

时间:2019-11-12 22:26:40

标签: laravel routing

我试图使用票证控制器中的存储功能来存储票证

// Create Ticket


 $ticket=new Ticket;
  $ticket->userName= $request->input('userName');
  $ticket->userEmail= $request->input('userEmail');
  $ticket->phoneNumber= $request->input('phoneNumber');
  $ticket->regular_quantity= $request->input('regular_quantity');
  $ticket->vip_quantity= $request->input('vip_quantity');
  $ticket->event_id = $this->route('id');
  $ticket->save();

  return redirect('/');
}

这是路线

Route::post('ticketstore', 'TicketsController@store')->name('ticketstore');

表单动作

<form action="{{route('ticketstore')}}" method="POST">
            @csrf

出现错误

1 个答案:

答案 0 :(得分:0)

所以改变这个

 $this->route('id');

使用

 $request->route('id');

对此进行调用在FormRequest中有效。

---编辑

现在,您尝试通过请求获取事件的ID,但没有传递它:

Route::post('ticketstore/{event}', 'TicketsController@store')->name('ticketstore');

然后在您的路线中通过活动:

{{route('ticketstore', $event)}}

,您可以使用$request->route('event')或类似这样的方法签名来获取它:

public function store(Request $request, Event $event)
{
    ...
    $ticket->event_id = $event->id;
    ...
}

或者,如果您的视图中包含事件下拉菜单,只需从请求$request->event_id;中获取事件ID