I'm using Laravel 5.3 and the same blade view to create/edit a casa(house in portuguese) and contato(contact in portuguese).
I have a form to submit into 2 tables(contatos
casas
). It was working fine until I changed the name
of the first 6 fields (table contatos
).
It was:
{!! Form::text('nome_contato') !!}
Now it is:
{!! Form::text('contato[nome_contato]') !!}
I had to do it, because the first one wasn't populating the input to edit it. But now it is telling me that those fields are empty even if they're not.
CasaRequest.php ↓↓
public function rules()
{
return [
'nome_contato' => 'required|max:255',
'telefone' => 'required|numeric|digits_between:10,11',
'celular1' => 'required|numeric|digits_between:10,11',
'celular2' => 'numeric|digits_between:10,11',
'celular3' => 'numeric|digits_between:10,11',
'skype' => 'max:255',
'nome' => 'required|max:100',
'descricao' => 'required|min:50|max:2000',
'endereco' => 'required|max:255',
'numero' => 'numeric|min:0',
'bairro' => 'required|max:100',
(etc........)
];
}
creteedit.blade.php ↓↓
@if(isset($casa))
{!! Form::model($casa, ['route' => ['casas.update', $casa->id], 'method' => 'put', 'class' => 'register']) !!}
@else
{!! Form::open(['route' => 'casas.store', 'class' => 'register']) !!}
@endif
<!-- First step Contatos -->
<div class="row">
<div class="form-group row">
<div class="col l2 offset-l1">
Nome para contato
</div>
<div class="col l8">
{!! Form::text('contato[nome_contato]') !!}
<span class="red-text text-lighten-1">{!!$errors->first('nome_contato')!!}</span>
</div>
</div>
<div class="form-group row">
<div class="col l2 offset-l1">
Telefone
<div class="col l8">
{!! Form::text('contato[telefone]') !!}
<span class="red-text text-lighten-1">{!!$errors->first('telefone')!!}</span>
</div>
</div>
<div class="form-group row">
<div class="col l2 offset-l1">
Celular 1
<div class="col l8">
{!! Form::text('contato[celular1]') !!}
<span class="red-text text-lighten-1">{!!$errors->first('celular1')!!}</span>
</div>
</div>
<div class="form-group row">
<div class="col l2 offset-l1">
Celular 2
</div>
<div class="col l8">
{!! Form::text('contato[celular2]') !!}
<span class="red-text text-lighten-1">{!!$errors->first('celular2')!!}</span>
</div>
<!-- Here comes more fields from the table `contatos` -->
<!-- Second step Casas -->
<div class="form-group row">
<div class="col l2 offset-l1">
<label class="right">Nome<span class="red-text">*</span></label>
</div>
<div class="col l8">
{!! Form::text('nome') !!}
<span class="red-text text-lighten-1">{!!$errors->first('nome')!!}</span>
</div>
</div>
<div class="form-group row">
<div class="col l2 offset-l1">
<label class="right">Descrição<span class="red-text">*</span></label>
</div>
<div class="col l8">
{!! Form::textarea('descricao') !!}
<span class="red-text text-lighten-1">{!!$errors->first('descricao')!!}</span>
</div>
</div>
<div class="form-group row">
<div class="col l2 offset-l1">
<label class="right">Endereço <span class="red-text">*</span></label>
</div>
<div class="col l5">
{!! Form::text('endereco') !!}
<span class="red-text text-lighten-1">{!!$errors->first('endereco')!!}</span>
</div>
<div class="col l1 offset-l1 ">
<label class="right">Número</label>
</div>
<div class="col l1">
{!! Form::text('numero') !!}
<span class="red-text text-lighten-1">{!!$errors->first('numero')!!}</span>
</div>
</div>
The fields from second step are working, only from first step are not, because of theirs name
: contato[field_name]
.
It's a nested input, you have to use dots.
Eg:
$request->input('contato.nome_contato')
Same thing for rules :
'contato.nome_contato' => 'required|max:255',