Laravel表示在调试模式下提交,但在正常模式下不起作用

时间:2014-07-23 12:05:18

标签: php forms postgresql debugging laravel

所以我有一个选择框,它提供了一个下拉菜单,可以通过下拉列表向管理员发送消息。它接受输入,然后更改为数据库中名为manager的列,用于它的相应列。当我尝试提交选择菜单时,它给了我Laravel的常规错误。但是当我在最后提交?debug = 1时它会提交但是给行的管理器列一个空白的值。

以下是我在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

3 个答案:

答案 0 :(得分:0)

似乎因为你命名你的select handler[],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');
}

通常情况下,当您接受多个值(如复选框/多选等)时,您只能使用[]后固定的表单中的名称...否则,它可能是最好的坚持不使用它,因为它可能会引起混淆。

答案 1 :(得分:0)

在控制器的开头尝试dd(Input::all()),确保您能够看到自己的期望。

此外,由于您要发送数组,您可能必须执行Input::get('handler.0') - 请参阅Input :: only()和Input :: except()代码块正下方的here

答案 2 :(得分:0)

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

像这样

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