2017-07-04 4 views
0

Ich benutze Laravel 5.3 und die gleiche Blade-Ansicht, um ein Casa (Haus in Portugiesisch) und Contato (Kontakt in Portugiesisch) zu erstellen/bearbeiten.Laravel - Felder von verschachtelten Eingängen nicht empfangen

Ich habe ein Formular in 2 Tabellen einzureichen (contatoscasas). Es funktionierte gut, bis ich die name der ersten 6 Felder änderte (Tabelle contatos).

Es war:

{!! Form::text('nome_contato') !!}

Nun ist es:

{!! Form::text('contato[nome_contato]') !!}

ich es zu tun hatte, denn der erste war nicht die Eingabe bevölkern sie zu bearbeiten. Aber jetzt sagt es mir, dass diese Felder leer sind, auch wenn sie es nicht sind.

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> 

Die Felder von der zweiten Stufe arbeiten, nur aus der ersten Stufe sind nicht wegen ihrer name: contato[field_name].

Antwort

3

Es ist eine geschachtelte Eingabe, Sie müssen Punkte verwenden.

ZB:

$request->input('contato.nome_contato') 

Das Gleiche gilt für Regeln:

'contato.nome_contato' => 'required|max:255', 
+0

Vielen Dank, ich wusste nicht, dass. Ich wollte nur hinzufügen, dass ich die Zeile geändert habe, die auch Fehler anzeigt '{!! $ errors-> first ('contato.nome_contato') !!}' – GabrielFiel

+0

Gern geschehen;) – OuailB

+0

Gibt es eine Möglichkeit, alle Eingaben anzufordern ohne das Feld anzugeben? Wie: '$ dataForm = $ request-> all();' Aber ich brauche auch die verschachtelten Eingaben. Vielen Dank – GabrielFiel

Verwandte Themen