Php PostsController@destroy未在Laravel中定义
如果遇到这个错误,我们将不胜感激。我得到的错误如下: 操作应用程序\Http\Controllers\PostsController@destroy没有定义。(视图:C:\xampp\htdocs\lsapp\resources\views\posts\show.blade.php) 我在PostsController中使用了“销毁”方法,并使用了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
{!!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,即。。。。这是一个非常相关的解释。谢谢