操作未定义 laravel/php 控制器

Action not defined laravel/php controller

我在 laravel 项目中遇到控制器操作问题,我不知道为什么,因为一切似乎都很好。

这是我关于错误部分的路线:

Route::get('/reminds','RemindController@index');
Route::get('/reminds','RemindController@create');

这是 RemindController.php 文件中定义的创建和索引方法:

    public function index()
{
    $reminds  = Remind::all();
    return View::make('remind.index', compact('reminds'));
}



public function create()
{
    try {


        $listyears = RemindController::generate_list(date('Y')-100, 101);
        $listmonths = RemindController::generate_list(1, 12);
        $listdays = RemindController::generate_list(1, 31);

        return View::make('remind.create', compact('listyears', 'listmonths', 'listdays'));
    } catch (Exception $e){
        App:abort(404);
    }
}

在create.blade.php(提醒视图)中,我有这个调用有问题的索引:

    <div class="panel-heading">
    <h2>create reminder</h2>
</div>
<div class="panel-body">
    {!! Form::open(['action'=> 'RemindController@index', 'class' => 'form']) !!}

问题是,每次我尝试访问调用提醒创建表单的页面时,我都会收到错误消息:

ErrorException (E_ERROR)
Action App\Http\Controllers\RemindController@index not defined. (View: C:\Users\myusername\Desktop\project\prototype\resources\views\remind\create.blade.php)

但是我明确定义了它。我不明白。谢谢

您使用相同的 url 和相同的方法定义了两条路由

Route::get('/reminds','RemindController@index');
Route::get('/reminds','RemindController@create');

重命名其中一个

Route::get('/reminds','RemindController@index');
Route::get('/reminds/create','RemindController@create');

Route::get('/提醒','RemindController@index'); Route::get('/提醒','RemindController@create');

这是同一条路线,所以从技术上讲,这部分你已经有问题了。尝试更改 HTTP 协议或重命名您的路由。

Route::get('reminds','RemindController@index');
Route::post('reminds','RemindController@create');

Route::get('reminds','RemindController@index');
Route::get('reminds/create','RemindController@create');

也已经省略了路线上的第一个斜杠,这样做没有用。

---更新*

而不是使用静态调用路由

你可以使用这样的东西

$router->group(function(){
   $this->get('/',['as' => "homepage" , 'use' => "MainController@homepage"] );

   $this->group(['prefix' => "dashboard",'as' => "dashboard"],function(){
      $this->get('/',['as' => "index",'use' => "DashboardController@index"]);
});
});

您已经为相同的 http 动词编写了相同的路由 url。

只需根据您的要求重命名它们即可。 为简单起见,建议为路由添加 name()。

为了以防万一这对某人有帮助,我遇到了同样的错误,但我的问题是我在定义路线时不小心使用了 Route::resource() 而不是 Route::get()。我假设这与 Route::post().

的情况相同