Laravel 刀片:如何删除预先填充的表单字段数据(在 db 中另存为空)
Posted
技术标签:
【中文标题】Laravel 刀片:如何删除预先填充的表单字段数据(在 db 中另存为空)【英文标题】:Laravel blade: How do you delete prepoulated form field data (save in db as null) 【发布时间】:2014-11-20 15:36:39 【问题描述】:我正在构建一些表单,其中字段填充有数据库数据,如果没有数据,则默认为占位符文本。
我似乎无法弄清楚的是:当用户删除表单中的所有数据时,它不会将其作为空白/空值保存回数据库,它只是在字段中携带相同的值......
输入:
<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');
关于如何实现这一点的任何想法?
谢谢,杰克。
【问题讨论】:
没有你的代码很难说什么。将数据保存到控制器中的数据库是您的工作。您应该提供控制器代码 嗨@MarcinNabiałek 我已经添加了控制器代码。我不确定检测表单是否为空的逻辑是什么。谢谢。 【参考方案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,因此不会完成分配,最后您将准确地保存到数据库中。
【讨论】:
谢谢,完美运行。我总是忘记 Laravel 是多么简单:)以上是关于Laravel 刀片:如何删除预先填充的表单字段数据(在 db 中另存为空)的主要内容,如果未能解决你的问题,请参考以下文章
使用javascript将具有删除操作的表单附加到laravel刀片文件