表单操作总是让我感到困惑,因为只是指定控制器似乎很简单,但是每次使用它时我都会得到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
的值。
小结
答案 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
如果要将参数传递给控制器方法,可以在路径中定义
Route::get('handle/{event}',['as' => 'handle.event.add', 'uses' => 'EventsController@addMethod'])
现在你的addMethod需要一个参数。