我试图检查一组字段是否至少有一个空字段。如果有空字段并且警报应该弹出,如果没有则应该执行其他操作。
代码
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() !!}
当我尝试更新电子邮件字段而不输入任何内容时,他将数据库中的实际名称视为空字段,我想继续用户所做的事情。 随着图像正常工作。我不知道你是不是拿到了。有人知道如何解决这个问题吗?
答案 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值或检查是否设置了值。