所以我有一个选择框,它提供了一个下拉菜单,可以通过下拉列表向管理员发送消息。它接受输入,然后更改为数据库中名为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
答案 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'))