Php Laravel表单在调试模式下提交,但在正常模式下不工作

Php Laravel表单在调试模式下提交,但在正常模式下不工作,php,forms,postgresql,debugging,laravel,Php,Forms,Postgresql,Debugging,Laravel,因此,我有一个选择框,它提供了一个下拉菜单,可以从下拉菜单中向管理员发送消息。它接受输入,然后更改为数据库中名为manager的列,该列对应于相应的列。当我试图提交选择菜单时,它会给我一个Laravel的常规错误。但当我将?debug=1放在末尾时,它会提交,但给行的manager列一个值为空 下面是我在routes.php中看到的内容 Route::get('foo/{id}', 'fooController@bar'); Route::post('foo/{id}', 'fooControl

因此,我有一个选择框,它提供了一个下拉菜单,可以从下拉菜单中向管理员发送消息。它接受输入,然后更改为数据库中名为manager的列,该列对应于相应的列。当我试图提交选择菜单时,它会给我一个Laravel的常规错误。但当我将?debug=1放在末尾时,它会提交,但给行的manager列一个值为空

下面是我在routes.php中看到的内容

Route::get('foo/{id}', 'fooController@bar');
Route::post('foo/{id}', 'fooController@bar');
这是表格

{{ Form::open(array('url' => '/admin/foo' . $message->id)) }}
{{ Form::select('handler[]', array('unassigned', 'foo', 'bar'), null, array('style' => 'width: 127px')); }}
{{ Form::submit('Change manager') }}
{{ Form::close() }}
{{ $message->manager }}
这是fooController中的内容

public function bar($id = null)
{
    $message = Message::find($id);
    $handler = Input::get('handler[]');
    $message->manager = $handler;
    $message->save();
    return Redirect::action('AdminController@foo_bar');
}

前几天我遇到了这样的问题,我完全不记得我做了什么。非常感谢您的帮助,谢谢!数据库是postgresql如果有任何帮助的话

看起来似乎是因为您正在命名select处理程序[],PHP将其作为数组的一部分来获取

设置消息模型时,请尝试以下操作

public function bar($id = null)
{
    $message = Message::find($id);
    $handler = Input::get('handler[]');
    $message->manager = $handler[0];
    $message->save();
    return Redirect::action('AdminController@foo_bar');
}
通常,当您接受多个值(如复选框/多重选择等)时,您只会在表单中使用名称post fixed with[]。。。否则,最好不要使用它,因为它可能会引起混乱。

在控制器的开头尝试ddInput::all,并确保您看到了预期的结果


另外,由于要发送数组,可能必须执行Input::get'handler.0'-请参见Input::only和Input::except代码块的右下方。

我通过将方法更改为PUT,以一种几乎令人沮丧的简单方式修复了它

像这样

Form::open(array('url' => 'foo/bar', 'method' => 'put'))

出于好奇:你从哪里得到的?debug=1?正式文档?您是否尝试过不使用handler数组形式?也就是说,仅仅使用{{Form::select'handler',…}}和Input::get'handler'??debug=1并不会将应用程序转换为调试模式。您有一个路由组,它的管理员前缀围绕着您向我们展示的这两条路由,对吗?@user3158900是的,我有。这仍然不起作用。我也试过了。我知道它在突出显示$message->manager=$handler所在的行之前已经走了这么远