【问题标题】:Laravel Route resource MethodNotAllowedHttpException on destroy methodLaravel Route 资源 MethodNotAllowedHttpException on destroy 方法
【发布时间】:2015-11-18 18:45:57
【问题描述】:

我正在使用由我的 routes.php 中的以下行定义的 resource Laravel 路由

Route::resource('test', 'App\Controllers\Teacher\TestController', ['only' => ['index', 'create', 'destroy']]);

index 方法工作正常。在索引模板中,我创建了一个表单以删除列表中的一项。

<form method="DELETE" action="{{ URL::action('App\Controllers\Teacher\TestController@destroy', $audit->id ) }}">
    <input type="submit" value="Remove" />
</form>

Laravel 正确生成了 URL,但是 当我发布此表单时我收到以下错误:

exception 'Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException' in /var/www/project/bootstrap/compiled.php:5365

我已经尝试在我的表单的方法属性中更改 DELETE by POST,但它不起作用。

我也读过这篇文章,但对我没有帮助:MethodNotAllowedHttpException on resource defined method Laravel-4

【问题讨论】:

    标签: php laravel laravel-4 laravel-routing


    【解决方案1】:

    当您手动创建表单时,您应该使用POST 作为方法,并以这种方式使用_method 输入和delete 值:

    <form method="POST" action="{{ URL::action('App\Controllers\Teacher\TestController@destroy', $audit->id ) }}">
        <input type="hidden" name="_method" value="DELETE" />
        <input type="submit" value="Remove" />
    </form>
    

    Reference in Laravel documentation for form method spoofing

    【讨论】:

    • 非常感谢。我在文档中没有发现任何提及!
    • @jedema 我已经用文档链接更新了我的答案(它适用于 Laravel 5.1,但同样适用于 Laravel 4)
    • 感谢您的文档链接 :)
    • 非常感谢您的回答。
    【解决方案2】:

    试试这个:

    <form action="/test" ....>
    

    【讨论】:

    • 究竟应该尝试什么?为什么 OP 应该使用固定的 URL 而不是路由器生成的?
    猜你喜欢
    • 2016-06-23
    • 1970-01-01
    • 2014-08-19
    • 2019-06-15
    • 2019-07-10
    • 2020-12-09
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多