我有一个包含设置列表的表单,所有设置都有自己的ID,通过简单的foreach循环显示。当用户单击更新按钮时,我希望能够使用Anahkiasen / Former更新所有值。但是,我似乎无法找到有关如何提交多组记录的文档。
例如,如果我打开表单只编辑一个设置而不是所有设置,我只会执行以下操作:
{{ Former::open()->method('PUT')->action(URL::to('settings/' . $setting['id'])) }}
这会将其发送给我的更新'资源方法和以下代码将负责更新:
public function update($id)
{
$setting = Setting::findOrFail($id);
if ($setting->save()) {
return Redirect::back()->with('message', "Setting #$id updated!");
} else {
return Redirect::back()->withInput()->withErrors($setting->errors());
}
}
是否可以同时使用多个记录并仍然使用方便的$autoHydrateEntityFromInput
和$forceEntityHydrationFromInput
功能?
我使用的是Laravel 4.1和Former 3.4.2。
答案 0 :(得分:0)
这必须通过将值放入数组并强制Blade模板中的现有值来完成:
@foreach ($settings as $s)
<div class="row">
{{ Former::text('values[' . $s['id'] . ']', $s['name'])->forceValue($s['value']) }}
</div>
@endforeach
然后检索控制器中的值:
public function update()
{
$values = Input::get('values');
foreach ($values as $id => $val) {
$setting = Setting::findOrFail($id);
$setting['value'] = $val;
if (!$setting->save()) {
return Redirect::back()->withInput()->withErrors($setting->errors());
}
}
return Redirect::back()->with('message', "Settings updated!");
}
这样做,标准资源不会像Route::resource('settings', 'SettingsController');
那样有效,所以我只需做Route::post('settings/update', 'SettingsController@update');
据我所知,在这种情况下,自动补水也不起作用。