您的控制器中不需要任何不同的代碼來處理此表單。所有(命名的)表單變量都將在Input :: all()中。
模型($用戶),您在
Form::model($user, array('route' => array('user.update', $user->id)))
傳遞正是你需要,如果你有一個以上的表參與,你必須做一些像
$user = User::where('id',$userID)
->leftJoin('users_addresses', 'users_addresses.user_id', '=', 'users.id')
->first();
任何記錄
並將此組合模型傳遞給Form :: model()。
你如何命名你的投入是完全取決於你,因爲你必須寫處理您的表單的邏輯。但是,在我看來,地址輸入的users_address[street]
是好的,因爲您最終會得到一組地址列,您可以立即將其傳遞到您的UserAddress模型。
<html>
<head>
<title></title>
</head>
<body>
{{ Form::model($user, array('route' => array('user.update', $user->id))) }}
{{ Form::label('first_name', 'First Name:', array('class' => 'address')) }}
{{ Form::text('first_name') }}
{{ Form::label('last_name', 'Last Name:', array('class' => 'address')) }}
{{ Form::text('last_name') }}
{{ Form::label('email', 'E-Mail Address', array('class' => 'address')) }}
{{ Form::text('email') }}
{{ Form::label('address[street1]', 'Address (Street 1)', array('class' => 'address')) }}
{{ Form::text('address[street1]') }}
{{ Form::label('address[street2]', 'Address (Street 2)', array('class' => 'address')) }}
{{ Form::text('address[street2]') }}
{{ Form::label('ddress[city]', 'City', array('class' => 'address')) }}
{{ Form::text('address[city]') }}
{{ Form::label('address[state]', 'State', array('class' => 'address')) }}
{{ Form::text('address[state]') }}
{{ Form::label('address[zip]', 'Zip Code', array('class' => 'address')) }}
{{ Form::text('address[zip]') }}
{{ Form::submit('Send this form!') }}
{{ Form::close() }}
</body>
</html>
如果你在你的控制器做dd(Input::all())
,你會得到這樣的:https://github.com/raveren/kint:
這個結果是通過編制品的DD()提供。真的很有幫助。
如果你的形式只是從一個單一的示範田,你的更新方法可以很簡單,看起來像:
public function update($id)
{
$user = User::find($id);
if (!$user->update(Input::all())) {
return Redirect::back()
->with('message', 'Something wrong happened while saving your model')
->withInput();
}
return Redirect::route('user.saved')
->with('message', 'User updated.');
}
上形成更復雜一點,編碼器將有更多的邏輯添加到它們的控制器,在你有更多的一點點研究情況下,我認爲你可以做到這一點:
public function update($id)
{
$user = User::find($id);
$inputs = Input::all();
if (!$user->update($inputs)) {
$address = new UserAddress($inputs['address']);
$user->address()->save($address);
...
}
...
}
這是非常漂亮的。那麼如何格式化字段名稱屬性中的屬性名稱呢?像'users_address.street'或者'users_address [street]'或者其他方式? – eimajenthat
另外,如果我通過Auth:user()檢索用戶,該怎麼辦?我可以做auth:user() - > leftJoin('users_addresses','users.id','=','users_addresses.user_id')? – eimajenthat
dd()生成那個漂亮的可摺疊數組視圖嗎?以前從未見過。看起來像[krumo](http://krumo.sourceforge.net/),但可能更好。無論如何,我認爲模型表單綁定在將字段保存到模型方面做了一些神奇的事情。文檔中提到了使表單輸入名稱與模型字段名稱相匹配的內容。也許這只是填充字段?但是,如果是這樣的話,是否有一個標準可以使地址字段填充? – eimajenthat