Laravel找不到控制器方法(不存在)



我正试图在BoController中实现一个名为"deleteBooking"的新方法,该方法定义为:

public function deleteBooking($id){
$booking = Reservation::find($id);
if($booking && $booking->delete()){
try {
$email = Mail::to($booking->user_email)->send(new Cancel($booking));
} catch(Exception $e){
Log::error($e->getMessage());
}
return redirect('admin/manager/home')->with('message','Réservation annulée!');
}
return redirect('admin/manager/home')->with('message','Réservation non annulée!');
}

但拉拉维尔在终点说:

(1/1) BadMethodCallException
Method [deleteBooking] does not exist.

来自同一类的其他方法也链接到端点,并且运行良好。

你有什么想法吗?非常感谢。

我修复了它,我在另一个文件夹中找到了另一个名为BoController的文件,不知怎么的,它与App\Http\Controllers的文件冲突。

谢谢。

很可能您已经为其他请求类型声明了该函数,而不是您试图创建的请求类型。例如,您放置了Route::post('some-method', 'BoController@deleteBooking');,但需要放置Route::get(...)Route::put(...)Route::delete(...)

如果不是那个问题,那么你可能拼错了。

我也遇到过类似的问题。然后我发现了composer安装日志中指出的一个问题,日志行的实例如下:

Class AppHttpControllersBlogController located in ./app/Http/Controllers/BlogControllerOld.php does not comply with psr-4 autoloading standard. Skipping.

基于此,我发现其中一个用Old后缀重命名的文件与主文件发生了冲突。因此,我必须选择以下解决方案之一:

  1. 删除为备份创建的文件
  2. 或者将重复文件中的类重命名为BlogControllerOld

因此检查composer install的问题是个好主意

它将突出显示可以使用上述方法之一解决的冲突。使用上述指定方法修复后,发布composer install以应用修复并重新生成自动加载器。

最新更新