【问题标题】:Method not found in laravel 5.6在 laravel 5.6 中找不到方法
【发布时间】:2019-04-26 16:31:42
【问题描述】:

我遇到了一个神秘的问题。当我按下提交时,它会显示

方法 App\Http\Controllers\RentController::store_data 不存在。

我想知道但不能。提前致谢。

在我的路线中

Route::post('/save_rent', 'RentController@store_data');

在我的控制器中

<?php

namespace App\Http\Controllers;
use Session;
use App\rent;
use Illuminate\Http\Request;

class RentController extends Controller
{
    public function store_data(Request $request)
    {
        dd('12');
    }
}

在我看来

<form 
    class="form form-horizontal"
    action="{{ url('save_rent') }}"
    method="POST"
    enctype="multipart/form-data"
>
    {{ csrf_field() }}
</form>

【问题讨论】:

  • 你的控制器的相对路径是什么?它应该与命名空间相同。
  • 在项目根目录下运行命令composer dump-autoload。看看它是否有效。
  • 好的,我检查了它已经在那里了
  • 执行composer dump-autoload后没有变化
  • 拨打php artisan route:list会出现路由吗?

标签: laravel laravel-5


【解决方案1】:

尝试为该路由定义一个名称。如下图

Route::post('/save_rent', 'RentController@store_data')->name('rent.store.data');

然后调用带有路由名称的表单动作

action="{{ route('rent.store.data') }}

更新:

注意到的另一个主要问题是未定义您对Controller 的扩展。

你应该在你的控制器文件中添加这个

use App\Http\Controllers\Controller;

如下图所示

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Session;
use App\rent;
use Illuminate\Http\Request;

class RentController extends Controller
{
    public function store_data(Request $request)
    {
        dd('12');
    }
}

【讨论】:

    【解决方案2】:

    只需命名路由并在表单中使用路由名称。

    Route::post('/save_rent', 'RentController@store_data')->name('rent.store');
    

    在你的表单中

    <form 
     class="form form-horizontal" action="{{ route('rent.store') }}" method="POST">
    {{ csrf_field() }}
    </form>
    

    我在您的控制器中没有发现任何错误。 希望它有效!

    【讨论】:

      猜你喜欢
      • 2018-12-09
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 2018-12-16
      • 2018-12-27
      • 2019-11-29
      • 1970-01-01
      相关资源
      最近更新 更多