我在这里有这些路线声明
//Skill
Route::get('skill','SkillController@index');
Route::get('skill/create','SkillController@create');
Route::post('skill/store','SkillController@store');
Route::get('skill/{id}','SkillController@show');
Route::get('skill/{id}/edit', 'SkillController@edit');
Route::post('skill/{id}/update','SkillController@update');
Route::delete('skill/{id}/destroy','SkillController@destroy');
有了这些路线,我可以在本地删除罚款。
当我试图删除生产时,我一直在努力
我肯定知道,我有这条线
路线::删除( '技能/ {ID} /销毁', 'SkillController @破坏');
我错过了什么?
路线是从表格触发的......是吗?你的表单方法应该是POST
,而不是DELETE
然后你应该添加一个隐藏的输入,使其作为DELETE
路由,从而帮助您维护Route::delete()
。
您的表单应如下所示:
<form action="/foo/bar" method="POST">
<input type="hidden" name="_method" value="DELETE">
你的路线:
Route::delete('skill/{id}/destroy','SkillController@destroy');
阅读https://laravel.com/docs/5.7/routing#form-method-spoofing以获得更多洞察力。
因为你的问题是生产只有linux服务器,我认为它可能是.htaccess问题。
通常,Web服务器将被配置为阻止除GET和POST之外的任何内容,因为99%的时间它们都是需要的,并且过去在应用程序中存在问题,假设请求是这两个中的一个。
你可以试试.htaccess
<Limit GET POST PUT DELETE>
Allow from all
</Limit>
(我不是apache的专家,这可能不完全正确)
当您在浏览器地址栏中记下您的请求时,它应该是GET或POST。这就是你犯错误的原因。
MethodNotAllowedHttpException:表示路由正确,但方法错误。您使用了POST方法 - 如果您使用浏览器,此方法是自动的。但是你需要DELETE方法。
要使用DELETE方法,您应该使用API客户端。 PhpStorm具有API内置API客户端。 PHPStorm RESTApi client docs
但!对我来说,最好的方法是使用邮差! Postman sending requests docs