如何使用 Laravel 的 Route::resource 的 POST?

How do I use the POST of Laravel's Route::resource?

下面是我的 Laravel 4 项目代码。

转到 authors/create URL 并提交表单后出现 405 错误。 但是,如果我在 routes.php 文件前加上 Route::post('authors/store', 'AuthorsController@store');,基本上是它应该做的事情的两倍,一切都像一个魅力!

为什么我需要在我的代码中添加上述行才能工作?我只能假设我在这里做错了。

routes.php:

Route::resource('authors', 'AuthorsController');

AuthorsController.php:

public function create() {
    $view = View::make('authors.create');
    return $view;
}

public function store() {
    //
}

authors/create.树枝:

{{ form_open({'url':'authors/store'},{"method" : "post"}) }}
<p>
{{ form_label("Name", "name") }}
{{ form_text("name") }}
</p>
<p>
    {{ form_submit("Add Author") }}
</p>
{{ form_close() }}

当您 POST 访问资源时,store 操作会触发。所以只是 authors 而不是 authors/store:

{{ form_open({'url':'authors'},{"method" : "post"}) }}

有关更多信息,请参阅 this table 什么 URL 对应于什么控制器操作。

我也觉得应该是这样的:

{{ form_open({'url':'authors', 'method' : 'post'}) }}

并且你可以通过路由名称Laravel自动生成让你的生活更轻松一点:

{{ form_open({'route':'authors.store', 'method' : 'post'}) }}

哦,还有一个,post 是默认方法,因此也应该这样做:

{{ form_open({'route':'authors.store'}) }}