I am having problems with validations in laravel
, in real it is validating correctly however I need to inform the user which field X is required or not.
Today the system simply sends to the same screen cleaning all my form this would not be the ideal one for me.
I need my program to report the fields that are failing so to remain in the same place with the data already filled in.
I have a sharing where I show these massages:
<div id="alert-box" class="alert alert-danger"{!! $errors->any() ? '' : "style='display: none'" !!}>
<b>Ops...</b>
<ul>
@if($errors->any())
@foreach($erros->any() as $erro)
<li>{{$erro}}</li>
@endforeach
@endif
</ul>
</div>
@if(Session::has('flash_message'))
<div class="alert alert-success">
<i class="icon fa fa-check"></i>
{{Session::get('flash_message')}}
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
</div>
@endif
On the pages where I want this validation to appear I simply do:
@include('shared.alert')
In my model I have the store function that would save my data to it, I programmed it like this:
public function store(ProdutoRequest $resquest){
$produto = Produto::create($resquest->all());
session()->flash('flash_message', 'Produto criado com sucesso');
$produtos = Produto::all();
if(Request::wantsJson()){
return $produto;
}else{
return view('Produto.listProduto', compact('produtos'));
}
}
The legal inside of it I use the session-flash
and it works perfectly however for the errors not.
Already my ProdutoRequest
I programmed it like this:
class ProdutoRequest extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'CdSubCategoria' => 'required',
'NmProduto' => 'required|min:1',
'VlUnit' => 'required|min:1',
'FlgDescontinuado' => 'required',
'FlgProdutoVisivel' => 'required',
'FlgPontua' => 'required',
];
}
}
My view form:
@include('shared.alert')
{{dump($errors)}}
<div class="box-body">
<div class="form-group{{ $errors->has('CdSubCategoria') ? ' has-error' : '' }}">
{!! Form::label('nmSubCategoria', 'Sub Categoria') !!}
{!! Form::select('CdSubCategoria', $subcategorias , $produto->CdSubCategoria, ['class' => 'form-control select2']) !!}
</div>
<div class="form-group{{ $errors->has('NmProduto') ? ' has-error' : '' }}">
{!! Form::label('nmProduto', 'Nome do produto') !!}
{!! Form::text('NmProduto', null, ['class' => 'form-control nomeProduto']) !!}
</div>
<div class="form-group{{ $errors->has('DscProduto') ? ' has-error' : '' }}">
{!! Form::label('dscProduto', 'Descrição do produto') !!}
{!! Form::textarea('DscProduto', null, ['class' => 'form-control', 'id' => 'editor1']) !!}
</div>
{!! Form::label('vlProduto', 'Valor') !!}
<div class="form-group{{ $errors->has('VlUnit') ? ' has-error' : '' }}">
<div class="input-group">
<span class="input-group-addon">R$</span>
{!! Form::text('VlUnit', null, ['class' => 'form-control','data-inputmask' => '"mask": "999.99"', 'data-mask']) !!}
<?php echo $errors->first('VlUnit'); ?>
</div>
</div>
<div class="form-group">
{!! Form::label('flgAdicionarEstoque', 'Adicionar estoque?') !!}
{!! Form::radio('FlgAdicionarEstoque', '1', false, ['class' => 'form-control estoqueVisivel minimal']) !!}
{!! Form::label('flgAdicionarEstoque', 'Sim') !!}
{!! Form::radio('FlgAdicionarEstoque', '0', true, ['class' => 'form-control estoqueVisivel Inativo minimal']) !!}
{!! Form::label('flgAdicionarEstoque', 'Não') !!}
</div>
<div class="camposEstoque">
<div class="form-group">
{!! Form::label('qtdEmEstoque', 'Estoque') !!}
{!! Form::number('UnitEmEstoque', null, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('flgDescontinuado', 'Produto descontinuado ?') !!}
{!! Form::radio('FlgDescontinuado', '1', false, ['class' => 'form-control minimal']) !!}
{!! Form::label('flgDescontinuado', 'Sim') !!}
{!! Form::radio('FlgDescontinuado', '0', true, ['class' => 'form-control Inativo minimal']) !!}
{!! Form::label('flgDescontinuado', 'Não') !!}
</div>
<div class="form-group">
{!! Form::label('flgProdutoVisivel', 'Produto visivel ?') !!}
{!! Form::radio('FlgProdutoVisivel', '1', false, ['class' => 'form-control produtoVisivel minimal']) !!}
{!! Form::label('flgProdutoVisivel', 'Sim') !!}
{!! Form::radio('FlgProdutoVisivel', '0', true, ['class' => 'form-control produtoVisivel Inativo minimal']) !!}
{!! Form::label('flgProdutoVisivel', 'Não') !!}
</div>
<div class="camposVisivel">
<div class="form-group">
{!! Form::label('visivel_Ini', 'Inicio da visualização') !!}
{!! Form::datetime('Visivel_Ini', \Carbon\Carbon::create()->format('d/m/Y H:i:s'), ['class' => 'form-control datepicker', 'id' => 'datInic']) !!}
</div>
<div class="form-group">
{!! Form::label('visivel_Fim', 'Fim da visualização') !!}
{!! Form::datetime('Visivel_Fim', null, ['class' => 'form-control datepicker']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('flgPontua', 'Produto pontua ?') !!}
{!! Form::radio('FlgPontua', '1', false, ['class' => 'form-control FlgPontua minimal']) !!}
{!! Form::label('flgPontua', 'Sim') !!}
{!! Form::radio('FlgPontua', '0', true, ['class' => 'form-control FlgPontua Inativo minimal']) !!}
{!! Form::label('flgPontua', 'Não') !!}
</div>
<div class="camposExtras">
<div class="form-group">
{!! Form::label('qtdPontos', 'Quantos pontos ?') !!}
{!! Form::number('QtdPontos', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('maxPontosPorSubCategoria', 'máximo de pontos ?') !!}
{!! Form::number('MaxPontosPorSubCategoria', null, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::submit($submitButton, ['class' => 'btn btn-success']) !!}
{!! link_to_route('produtos.index', 'Voltar', '', ['class' => 'btn btn-warning' ]) !!}
</div>
</div>
<!-- /.box-body -->
And here's my main view:
@section('conteudo')
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Cadastro de <a class="nameCadastro">produtos</a></h3>
</div>
<!-- /.box-header -->
<!-- form start -->
{!! Form::open(['route' => 'produtos.store', 'id' => 'produtos-form']) !!}
@include('Produto.form', array('submitButton' => 'Enviar'))
{!! Form::close() !!}
</div>
@stop
What's missing for me? How do I get to the point I need, specified in bold?