我正在构建一些表单,其中字段用数据库数据填充,如果没有数据则默认为占位符文本。
我似乎无法弄清楚的是:当用户删除表单中的所有数据时,它不会将其作为空白/ null保存回数据库,它只是在字段中携带相同的值...
输入:
<div class="form-group @if($errors->has('username')){{ 'has-error' }}@endif">
<div class="col-md-6">
<label for="username">Username</label>
@if($errors->has('username'))<span class="label-has-error">{{ $errors->first('username') }}</span>@endif
<input type="text" name="username" class="form-control" tabindex="1" @if($info->username) value="{{ e($info->username) }}" @else placeholder="Username" @endif>
</div>
</div>
控制器:
public function postSettings() {
$validator = Validator::make(Input::all(),
array(
'username' => 'required_without_all:location,fullname|min:3',
'fullname' => 'required_without_all:location,username',
'location' => 'required_without_all:fullname,username'
)
);
if($validator->fails()) {
return Redirect::route('settings')->withErrors($validator);
} else {
$user = User::find(Auth::user()->id);
if(Input::get('username')) {
$user->username = Input::get('username');
}
if(Input::get('fullname')) {
$user->fullname = Input::get('fullname');
}
if(Input::get('location')) {
$user->location = Input::get('location');
}
$user->save();
Flash::success('Settings have been updated');
return Redirect::route('settings');
}
Flash::error('Update was unsecessful, please try again!');
return Redirect::route('settings');
}
关于如何实现这一目标的任何想法?
谢谢,杰克。
答案 0 :(得分:1)
问题是if
陈述。
您应该尝试更改:
if(Input::get('username')) {
$user->username = Input::get('username');
}
if(Input::get('fullname')) {
$user->fullname = Input::get('fullname');
}
if(Input::get('location')) {
$user->location = Input::get('location');
}
到
$user->username = Input::get('username');
$user->fullname = Input::get('fullname');
$user->location = Input::get('location');
现在,如果这些输入为空if
语句将返回false,那么分配将无法完成,最后您将完全保存到数据库中。