【问题标题】:Laravel form actions leads to undefined routeLaravel 表单操作导致未定义的路由
【发布时间】:2014-08-07 06:29:07
【问题描述】:

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

我目前有一个路由设置为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. 我想更改我的表单以指向控制器方法而不是 url。
  2. 我想在我的表单中传递一个参数。

【问题讨论】:

    标签: laravel


    【解决方案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 需要一个参数。

    【讨论】:

      猜你喜欢
      • 2019-09-10
      • 2015-01-07
      • 2020-03-27
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      • 2018-06-30
      • 2018-12-16
      相关资源
      最近更新 更多