Php PostsController@destroy未在Laravel中定义

Php PostsController@destroy未在Laravel中定义,php,laravel,methods,Php,Laravel,Methods,如果遇到这个错误,我们将不胜感激。我得到的错误如下: 操作应用程序\Http\Controllers\PostsController@destroy没有定义。(视图:C:\xampp\htdocs\lsapp\resources\views\posts\show.blade.php) 我在PostsController中使用了“销毁”方法,并使用了Laravel的最新愿景 {!!Form::open(['action' => ['PostsController@destroy', $pos

如果遇到这个错误,我们将不胜感激。我得到的错误如下:

操作应用程序\Http\Controllers\PostsController@destroy没有定义。(视图:C:\xampp\htdocs\lsapp\resources\views\posts\show.blade.php)

我在PostsController中使用了“销毁”方法,并使用了Laravel的最新愿景

{!!Form::open(['action' => ['PostsController@destroy', $post->id], 'method' => 'POST', 'class' => 'pull-right'])!!}
    {{Form::hidden('_method', 'DELETE')}}
    {{Form::submit('Delete', ['class' => 'btn btn-danger'])}}
{!!Form::close()!!}

您可以尝试像这样使用
action
helper函数WelcomeController@log_in)或者,您可以将操作设置为提供控制器的路由。

您错过了一步

回想一下html表单中的action属性是什么样子的:

action="{{ you put a url here, not a controller action }}"

然后考虑您的路由文件,在那里您应该添加您在“代码”> {{}}} /代码>中引用的任何路由,并将其映射到路由文件中的控制器动作。


我建议您在不使用表单的情况下执行此操作:,这样您就可以更好地理解它(并且不再复杂)。

只是您需要更改表单中的方法表单以如下方式删除:

{!!Form::open(['action' => ['PostsController@destroy', $post->id], 'method' => 'DELETE', 'class' => 'pull-right'])!!}
    {{Form::hidden('_method', 'DELETE')}}
    {{Form::submit('Delete', ['class' => 'btn btn-danger'])}}
{!!Form::close()!!}
试试这个。 我将操作更改为URL

    {!!Form::open(['url' => ['posts', $post->id], 'method' => 'POST', 'class' => 'pull-right'])!!}
        {{Form::hidden('_method', 'DELETE')}}
        {{Form::submit('Delete', ['class' => 'btn btn-danger'])}}
    {!!Form::close()!!}

laravel版本中的语法经常发生变化。所以一定要检查你的版本。 现在我想您可能正在使用Laravel 5.4.36版或其他版本。 所以我想试着将“ACTION”改为“URL”,如下所示

{!!Form::open(['url' => ['PostsController@destroy', $post->id], 'method' => 'POST', 'class' => 'pull-right'])!!}
    {{Form::hidden('_method', 'DELETE')}}
    {{Form::submit('Delete', ['class' => 'btn btn-danger'])}}
{!!Form::close()!!}

您的
操作
方法与您编写它的方式很好。该错误字面上意味着您没有名为
PostsController@destroy

只需运行:

php artisan route:list
如果控制器存在,
name
列将为您提供前缀和方法
Post.destroy
,在同一行中,
action
列将为您提供控制器名称
PostsController@destroy
。显然,如果这两个条件不存在;您将得到以下错误:


Action-App\Http\Controllers\PostsController@destroy未定义。

在Laravel 8中,需要对路线进行完整描述,如下所示:

{!!Form::open(['action' => ['App\Http\Controllers\PostsController@destroy', $post->id], 
'method' => 'POST', 'class' => 'float-right'])!!}

尝试编写
App\Http\Controllers\PostsController@destroy
而不是
PostsController
谢谢,但尝试了,运气不好。排序PostController@destroy应该是的,所以你用了太多的“PostsController”而不是“PostController”?是的,输入错误应该是PostController。谢谢您尝试过,但仍然是相同的错误消息,谢谢您的建议。您好,不知道您不使用表单是什么意思:?表单::只生成html,即。。。。这是一个非常相关的解释。谢谢