Laravel 方法更新记录时不允许出现异常

Laravel 方法更新记录时不允许出现异常,laravel,Laravel,Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpExceptionNomessage 我在尝试更新数据库中的记录时遇到此错误。不知道是什么问题。这个问题可能是重复的,但我检查了所有问题,找不到答案。请帮我做这个 控制器更新方法: public function updateEvent(Request $request, $id=''){ $name = $request->name; $sta

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpExceptionNomessage

我在尝试更新数据库中的记录时遇到此错误。不知道是什么问题。这个问题可能是重复的,但我检查了所有问题,找不到答案。请帮我做这个

控制器更新方法:

public function updateEvent(Request $request, $id=''){

      $name = $request->name;

      $startdate = date_create($request->start_date);

      $start_date = $startdate;

      $time = $request->start_time;

      $start_time = $time;//date("G:i", strtotime($time));

      $endDate = date_create($request->end_date);

      $end_date =$endDate;

      $time_e = $request->end_time;

      $end_time = $time_e;//date("G:i", strtotime($time_e));

      $location = $request->location;

      $description = $request->description;

      $calendar_type = $request->calendar_type;

      $timezone = $request->timezone;

      if ($request->has('isFullDay')) {
        $isFullDay = 1;
      }else{
        $isFullDay = 0;
      }

      DB::table('events')->where('id', $id)->update(
               array(
                   'name' => $name,
                   'start_date' => $start_date,
                   'end_date' => $end_date,
                   'start_time' => $start_time,
                   'end_time' => $end_time,
                   'isFullDay' =>$isFullDay,
                   'description' => $description,
                   'calendar_type' => $calendar_type,
                   'timezone' => $timezone,
                   'location' => $location,
               ));
      // Event Created and saved to the database
      //now we will fetch this events id and store its reminder(if set) to the event_reminder table.

      if(!empty($id))
      {
        if (!empty($request->reminder_type && $request->reminder_number && $request->reminder_duration)) {
          DB::table('event_reminders')->where('id', $id)->update([
            'event_id' => $id,
            'type' => $request->reminder_type,
            'number'=> $request->reminder_number,
            'duration' => $request->reminder_duration
          ]);
        }
      }
      else{
        DB::table('event_reminders')->insert([
          'type' => $request->reminder_type,
          'number'=> $request->reminder_number,
          'duration' => $request->reminder_duration
        ]);
      }

       return redirect()->back();
    }
路线:

Route::post('/event/update/{id}', 'EventTasksController@updateEvent');
表单属性:

<form action="/event/update/{{$event->id}}" method="POST">
      {{ method_field('PATCH')}}

{{method_字段('PATCH')}

我在我的日历页面中调用了相同的更新函数,它在那里工作得很好。不知道为什么它在这里不起作用。

检查路由方法

Route::patch('/event/update/{id}', 'EventTasksController@updateEvent');

补丁应该是在route facade上调用的方法。

检查路由方法

Route::patch('/event/update/{id}', 'EventTasksController@updateEvent');

补丁应该是在route facade上调用的方法。

将您的路由更改为
补丁

Route::patch('/event/update/{id}', 'EventTasksController@updateEvent');
请发表评论:


您可以在单击的元素上通过类似
data method
属性的方式将该方法发送到ajax调用,然后在ajax调用中使用该方法。请参阅此问题/答案以获取帮助

将路线更改为
补丁

Route::patch('/event/update/{id}', 'EventTasksController@updateEvent');
请发表评论:


您可以在单击的元素上通过类似
data method
属性的方式将该方法发送到ajax调用,然后在ajax调用中使用该方法。请参阅此问题/答案以获取帮助

我知道
patch
在这里工作,但是从我的日历页面我通过
ajax
进行更新,它的类型是
post
,所以更改它会使另一个表单不工作。我知道
patch
在这里工作,但是从我的日历页面我通过
ajax
进行更新,它的类型是
post
,所以更改它使另一个表单不工作。我知道补丁在这里工作,但从我的日历页上看,我正在通过ajax更新它的类型为post,所以更改它会使另一个表单不工作。我知道补丁在这里工作,但从我的日历页上看,我正在通过ajax更新它的类型为post,所以更改它会使另一个表单不工作。看起来您没有使用
资源
,您正在定义
post
路线。那么,为什么不从刀片服务器中删除
{{method\u field('PATCH')}
?您是否尝试将@csrf刀片服务器指令放入您的表单中?您似乎没有使用
资源
,而是定义
post
路由。那么,为什么不从刀片服务器中删除
{{method\u field('PATCH')}
?您是否尝试将@csrf刀片服务器指令放入您的表单中?