繁体   English   中英

Laravel Blade:如何删除预先填充的表单字段数据(在db中另存为null)

[英]Laravel blade: How do you delete prepoulated form field data (save in db as 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');

}

关于如何实现此目标的任何想法?

谢谢,杰克。

问题是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,因此将不执行赋值操作,最后将您从中获得的数据完全保存到数据库中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM