Laravel 4.2 MethodNotAllowedHttpException 删除

Posted

技术标签:

【中文标题】Laravel 4.2 MethodNotAllowedHttpException 删除【英文标题】:Laravel 4.2 MethodNotAllowedHttpException on delete 【发布时间】:2014-11-06 22:38:43 【问题描述】:

我是 Laravel 的新手,所以有一个项目,一个简单的 CRUD,但是当我尝试删除数据时删除方法不起作用,我真的不知道为什么。这是错误:

错误:

throw new MethodNotAllowedHttpException($others);

控制器:

public function destroy($id)

    $project = Project::find($id);
    if($project->user_id==Auth::id()) 
        $project->delete();
        return Redirect::to('/');
     else 
        Session::flash('message', 'You can't delete this!');
        return Redirect::to('/');
    

查看:

Form::open(array('url' => 'project/destroy/'.$p->id, 'method' => 'DELETE'))
    Form::submit("Delete", array('class' => 't2tButton text-center'))
Form::close()

路线:

Route::post('/project/destroy/id', "ProjectController@destroy");

【问题讨论】:

你确定 php 引擎不会抛出语法错误吗?这个:'You can't delete this!' - 你必须用双引号括起来这个刺"" 好点@bad_boy,或者像这样can\'t逃避can't中的'can\'t 【参考方案1】:

您为POST 设置了路线,但没有为DELETE 设置路线。

尝试将此添加到您的路线中:

Route::delete('/project/destroy/id', "ProjectController@destroy");

或者您可以将您的方法更改为 POST 并保持您的路线不变,但要使其保持 RESTful,最好更改为 DELETE

【讨论】:

没错,就是这个问题哈哈哈我刚贴出来,谢谢=)。 @bad_boy 他至少要等 15 分钟...但是如果有帮助,请在该时间过去后接受...谢谢【参考方案2】:

我刚想出答案,错误就在Routes的这一行:

Route::delete('/project/destroy/id', "ProjectController@destroy");

Route 方法需要是DELETE

【讨论】:

以上是关于Laravel 4.2 MethodNotAllowedHttpException 删除的主要内容,如果未能解决你的问题,请参考以下文章

找不到类“PushManager”-Laravel 4.2

text 用于Laravel 4.2 #laravel的PHP 7.1加密器

从 4.1 升级到 4.2 后 Laravel 控制器路由中断

Laravel 升级到 4.2 - 需要 mcrypt 扩展

Laravel 4.2 MethodNotAllowedHttpException 删除

Laravel 版本 - 4.2 注销不起作用