检查值是否为null laravel 5

时间:2015-11-16 14:29:50

标签: php laravel-5

我试图检查一组字段是否至少有一个空字段。如果有空字段并且警报应该弹出,如果没有则应该执行其他操作。

代码

public function updatePerfil() {
    $file = Input::file('imagem');
    $email = Input::get('email');
    $profileData = Input::except('_token');
    $validation = Validator::make($profileData, User::$profileData);
    if ($validation->passes()) {
        $update = Input::only('name','imagem','data_nascimiento');
        if ($file == null || $email == null) {
            User::where('id', Input::get('id'))->update($profileData);
            Session::flash('message', 'Perfil editado com sucesso');
            return view('backend/perfil.index'); 
        }
        $file = array_get($profileData,'imagem');
        $destinationPath = 'imagens/perfil/';
        $extension = $file->getClientOriginalExtension();
        $filename = Auth::user()->id . '.' . $extension;
        $profileData['imagem'] = $filename;
        Image::make($file)->resize(400, 400)->save($destinationPath.$filename);
        User::where('id', Input::get('id'))->update($profileData);
        Session::flash('message', 'Perfil editado com sucesso');
        return Redirect::to('backend/perfil');
    } else {
        return Redirect::to('backend/perfil')->withInput()->withErrors($validation);
    }
}

public static $profileData = array(
        'email' =>  'email|unique:users',
        'name' =>  'required|min:5|max:25',
        'data_nascimento' => 'date',
        'imagem' => 'image|max:1000|mimes:jpeg,jpg,png'
        );

表格

{!! Form::open(array('class' => 'form-horizontal', 'url' => 'backend/perfil', 'name' => 'updatePerfil', 'role' => 'form', 'files'=> true))!!}

    <input type="hidden" name="id" value="{{Auth::user()->id}}">

    <div class="row">
        <div class="col-md-3 col-lg-3"></div>
        <div class="col-md-7 col-lg-7">
            @if (count($errors) > 0)
                <div class="alert alert-danger" style="margin-top: 0px;">
                    <strong>Ups!</strong> Existe algum problema com o formulário.<br><br>
                    <ul>
                        @foreach ($errors->all() as $error)
                            <li>{{ $error }}</li>
                        @endforeach
                    </ul>
                </div>
            @endif
        </div>
    </div>
    <div class="row">
        <div class="col-md-3 col-lg-3"></div>
        <div class="col-md-7 col-lg-7">
            @if (Session::has('message'))
                <div class="alert alert-success" style="margin-top: 0px;">
                    {{ Session::get('message') }}
                </div>
            @endif
        </div>
    </div>        
    <div class="row" style="margin-bottom: 20px;">
        <div class="col-md-3 col-lg-3"></div>
        <div class="col-md-2 col-lg-2">
            {!! Form::label('name', 'Utilizador', ['class' => 'label_perfil']) !!}
        </div>
        <div class="col-md-5 col-lg-5">
            {!! Form::text('name', Auth::user()->name, ['class' => 'form-control input-md' , 'placeholder' => 'Utilizador']) !!}
        </div>
    </div>
    <div class="row" style="margin-bottom: 20px;">
        <div class="col-md-3 col-lg-3"></div>
        <div class="col-md-2 col-lg-2">
            {!! Form::label('data_nascimento', 'Data de nascimento', ['class' => 'label_perfil']) !!}
        </div>
        <div class="col-md-5 col-lg-5">
            {!! Form::date('data_nascimento', Auth::user()->data_nascimento, ['class' => 'form-control input-md']) !!}
        </div>
    </div>
    <div class="row" style="margin-bottom: 20px;">
        <div class="col-md-3 col-lg-3"></div>
        <div class="col-md-2 col-lg-2">
            {!! Form::label('genero', 'Sexo', ['class' => 'label_perfil']) !!}
        </div>
        <div class="col-md-5 col-lg-5">
            {!! Form::select('genero', ['Masculino' => 'Masculino', 'Feminino' => 'Feminino'], Auth::user()->genero, ['class' => 'form-control input-md']) !!}
        </div>
    </div>
    <div class="row" style="margin-bottom: 20px;">
        <div class="col-md-3 col-lg-3"></div>
        <div class="col-md-2 col-lg-2">
            {!! Form::label('email', 'Email', ['class' => 'label_perfil']) !!}
        </div>
        <div class="col-md-5 col-lg-5">
            {!! Form::text('email', Auth::user()->email, ['class' => 'form-control input-md', 'placeholder' => 'Email']) !!}
        </div>
    </div>
    <div class="row" style="margin-bottom: 20px;">
        <div class="col-md-3 col-lg-3"></div>
        <div class="col-md-2 col-lg-2">
            {!! Form::label('imagem', 'Imagem', ['class' => 'label_perfil']) !!}
        </div>
        <div class="col-md-5 col-lg-5">
            {!! Form::file('imagem', ['class' => 'input-file']) !!}
        </div>
    </div>   
    <div class="row" style="margin-bottom: 20px; margin-top: 30px;">
        <div class="col-md-3 col-lg-3"></div>
        <div class="col-md-9 col-lg-9">
            {!! Form::submit('Alterar perfil', ['class' => 'btn btn-primary']) !!}
        </div>
    </div> 
{!! Form::close() !!}

当我尝试更新电子邮件字段而不输入任何内容时,他将数据库中的实际名称视为空字段,我想继续用户所做的事情。 随着图像正常工作。我不知道你是不是拿到了。有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

你可以使用Validation of Laravel和一些laravel魔法检查电子邮件是否为空,试试这个:

public function updatePerfil() {
    $profileData = Input::except('_token');
    $validation = Validator::make($profileData, User::$profileData);
    if ($validation->passes()) {
        $update = Input::only('name','imagem','data_nascimiento');
        if(Input::has('email')){
            $update['email'] = Input::get('email');
        }
        User::find(Input::get('id'))->update($update);
        Session::flash('message', 'Perfil editado com sucesso');
        return view('backend/perfil.index'); 
    } else {
        return Redirect::to('backend/perfil')->withInput()->withErrors($validation);
    }
}   

public static $profileData = [
    'email' =>  'sometimes|required|email|unique:users',
    'name' =>  'required|min:5|max:25',
    'data_nascimento' => 'date',
    'imagem' => 'image|max:1000|mimes:jpeg,jpg,png',
    'id'=>'required|integer'
];

别忘了,$$是variable of variable in php...

<强>更新 请改用此代码:

public function updatePerfil(Request $request) {
    $rules = [
        'email' =>  'sometimes|required|email|unique:users',
        'name' =>  'required|min:5|max:25',
        'data_nascimento' => 'date',
        'imagem' => 'image|max:1000|mimes:jpeg,jpg,png',
        'id'=>'required|integer'
    ];
    $validation = Validator::make($request->except('_token'), $rules);
    if ($validation->passes()) {
        $update = $request->only('name','data_nascimiento');
        if($request->has('email')){
            $update['email'] = $request->input('email');
        }
        if($request->hasFile('imagem')){
            $file = $request->file('imagem');
            $destinationPath = 'imagens/perfil/';
            $extension =  $request->file('imagem')->getClientOriginalExtension();
            $fileName = Auth::user()->id . '.' . $extension;
            $request->file('imagem')->move($destinationPath, $fileName);
            $update['imagem'] = $fileName;
        }
        User::find($request->input('id'))->update($update);
        Session::flash('message', 'Perfil editado com sucesso');
        return view('backend/perfil.index'); 
    } else {
        return Redirect::to('backend/perfil')->withInput()->withErrors($validation);
    }
}

答案 1 :(得分:0)

在第三行有if电子邮件,在if条件下有$ email。请检查它是否是拼写错误。除此之外,php中的isset()应该有助于检查NULL值或检查是否设置了值。