Laravel表单操作导致未定义的路由

时间:2014-08-06 21:28:29

标签: laravel

表单操作总是让我感到困惑,因为只是指定控制器似乎很简单,但是每次使用它时我都会得到Route [Controller@method] not defined。所以我总是去手动制作路线,然后使用我的表格的网址。

我目前的路线设置为Route::controller('handle/events', 'EventsController'),我尝试从以下形式调用方法postAdd

{{ Form::open(['action' => 'EventsController@postAdd']) }}

而不是使用 ['url' => 'handle/events/add']这是完全可以接受的,因为这是一条RESTful路线。

当我使用该动作时,Laravel会抛出Route [EventsController@postAdd] not defined.。 EventsController中的方法postAdd也接受我想在表单中传递的参数。

在控制器中,方法是

public function postAdd($staff = false) {

    var_dump($staff); // Always false

}

再一次,我认为它会如此简单:

{{ Form::open(['url' => 'handle/events/add'], true) }}但是它没有改变$staff的值。

小结

  1. 我想将表单更改为指向控制器方法而不是网址。
  2. 我想通过表单传递一个参数。

1 个答案:

答案 0 :(得分:1)

首先可以通过命名路线来解决问题。

For example: Route::post('handle/events/add',['as' => 'handle.event.add',  'uses' => 'EventsController@addMethod']);

然后在你的表格中你可以做这样的事情

{{ Form::open(array('route' => 'handle.event.add', 'method' =>'POST'))}}

现在您的表单将使用EventsController @ addMethod

文档named routes

如果要将参数传递给控制器​​方法,可以在路径中定义

Route::get('handle/{event}',['as' => 'handle.event.add', 'uses' => 'EventsController@addMethod'])

现在你的addMethod需要一个参数。