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

时间:2015-02-21 17:54:04

标签: php rest laravel laravel-4 routes

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

转到作者/创建网址并提交表单会给我一个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() {
    //
}

作者/ create.twig:

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

1 个答案:

答案 0 :(得分:1)

POST到资源时,store操作获取触发器。所以只是authors而不是authors/store

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

有关哪些URL与控制器操作相对应的详细信息,请参阅this table

我认为它应该是这样的:

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

你可以通过Laravel自动生成的路线名称,让你的生活更轻松:

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

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

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