【问题标题】:Laravel cannot find a Controller Method (does not exist)Laravel 找不到控制器方法(不存在)
【发布时间】:2018-07-26 10:42:02
【问题描述】:

我正在尝试在名为“deleteBooking”的 BoController 中实现一个新方法,该方法已定义:

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!');
}

但是端点的laravel说:

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

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

请问您有什么想法吗?谢谢。

【问题讨论】:

  • 你能显示BoController的其余部分和你正在使用的路线吗?
  • 检查路由 - 路由丢失,或者您可能拼错了路由定义上的函数名称。文件(尝试 php artisan route:list 并比较路由和函数名)
  • GET|HEAD | admin/booking/delete/{id} | | App\Http\Controllers\BoController@deleteBooking 来自 Route list,Route::get('booking/delete/{id}', 'BoController@deleteBooking'); 来自 web.php,如果需要我会发布整个课程。
  • 你试过php artisan route:clearphp artisan cache:clearcomposer dump吗?
  • 我试过了,还是不存在。

标签: php laravel laravel-5


【解决方案1】:

我把它修好了,我在另一个文件夹中找到了另一个名为 BoController 的文件,它与 App\Http\Controllers 冲突。

谢谢。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我改了名字,但仍然有这个错误,我也检查了我的拼写方式。
    • 您对该操作提出了什么样的要求?它是 GET、POST、PUT 还是 DELETE?
    • 这是一个 GET 方法
    • 你能显示你的路由声明的 sn-p 吗(例如 Route::get('name', 'BoController@deleteBooking'))?
    【解决方案3】:

    我也遇到过类似的问题。然后我发现了 composer install log 中指出的一个问题,并带有以下日志行实例:

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

    基于此,我发现使用 Old 后缀重命名的文件之一与主文件产生冲突。所以在这里我必须选择以下解决方案:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-27
      • 2016-04-04
      • 2014-03-09
      • 2014-05-12
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      相关资源
      最近更新 更多