2016-09-23 7 views
1

희망은 모두 훌륭합니다. 양식 모델 바인딩에 Laravel 5.3 및 LaravelCollective 패키지를 사용하고 있습니다. 입력 데이터에 오류가없는 경우 유효성을 검사 한 다음 데이터베이스에 저장하려는 subjects array이 있습니다.입력 데이터에 유효성 검사 오류가있을 때 양식이 채워지지 않습니다. Laravel Collective

다음 스 니펫은 양식, 다른보기, 유효성 검사 규칙 및 컨트롤러 코드의 부분보기를 보여줍니다.

UserProfile.blade.php

    <!-- Panel that Adds the Subject - START --> 
        <div class="col-md-12"> 
         <div class="panel panel-default" id="add_Subject_panel"> 
          <div class="panel-heading">Add Subject(s):</div> 
          <div class="panel-body"> 
           {!! Form::open(array('method'=>'post', 'url'=>route('user.store.subject', 1))) !!} 
            @include('user.partials.subjects', ['buttonText'=>'Add Subject(s)']) 
           {!! Form::close() !!} 
          </div> 
         </div> 
        </div> 
        <!-- Panel that Adds the Subject - END --> 

subjects.blade.php

@if (count($errors) > 0) 
    <div class="alert alert-danger"> 
     <ul> 
      @foreach ($errors->all() as $error) 
       <li>{{ $error }}</li> 
      @endforeach 
     </ul> 
    </div> 
@endif 

    <div class="subject-list"> 
     <div class="input-group subject-input"> 
      <input type="text" name="name[]" class="form-control" value="" placeholder="Subject" /> 
      <span class="input-group-btn"> 
       <span class="btn btn-default">Primary subject</span> 
      </span> 
     </div> 
    </div> 

    <div class="text-right"> 
     <br /> 
     <button type="button" class="btn btn-success btn-sm btn-add-subject"><span class="glyphicon glyphicon-plus"></span> Add Subject</button> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-6 col-md-offset-4 text-right"> 
      <button type="submit" class="btn btn-primary"> 
       {{ $buttonText }}&nbsp; <i class="fa fa-btn fa-subject"></i> 
      </button> 
     </div> 
    </div> 


@push('scripts') 

{{-- <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> --}} 
<script src="{{ asset('scripts/jquery-2.2.4.min.js') }}" type="text/javascript" charset="utf-8" async defer></script> 

<script> 

     $(function() 
     { 

      $(document.body).on('click', '.btn-remove-subject', function(){ 
       $(this).closest('.subject-input').remove(); 
      }); 

      $('.btn-add-subject').click(function() 
      { 
       var index = $('.subject-input').length + 1; 

       $('.subject-list').append(''+ 
        '<div class="input-group subject-input" style="margin-top:20px; margin-bottom:20px;">'+ 
         '<input type="text" name="name['+index+']" class="form-control" value="" placeholder="Subject" />'+ 
         '<span class="input-group-btn">'+ 
          '<button class="btn btn-danger btn-remove-subject" type="button"><span class="glyphicon glyphicon-remove"></span></button>'+ 
         '</span>'+ 
        '</div>' 
       ); 
      }); 
     }); 


</script> 

@endpush 

내가 만든 사용자 지정을 사용하여 컨트롤러에 배열로 전달 된 모든 주제를 유효성을 검사 할 양식 요청. 다음은 I 데이터베이스에 입력 배열 데이터를 저장하는 데 사용하고 제어 방법에 대한 코드는 다음과 열린 요청

SubjectRequest.php

<?php 

namespace App\Http\Requests; 

use Illuminate\Foundation\Http\FormRequest; 

class SubjectRequest extends FormRequest 
{ 
    /** 
    * Determine if the user is authorized to make this request. 
    * 
    * @return bool 
    */ 
    public function authorize() 
    { 
     return true; 
    } 

    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     // dd("Rules Area"); 
     foreach($this->request->get('name') as $key => $val) 
     { 

      $rules['name.'.$key] = 'required|min:5|max:50'; 
     } 
     // dd($rules); 
     return $rules; 
    } 

    public function messages() 
    { 
     // dd('Message Area. . .'); 
     $messages = []; 
     foreach($this->request->get('name') as $key => $val) 
     { 
      $messages['name.'.$key.'.required'] = ' Subject Name '.$key.'" is required.'; 
      $messages['name.'.$key.'.min'] = ' Subject Name '.$key.'" must be atleast :min characters long.'; 
      $messages['name.'.$key.'.max'] = ' Subject Name '.$key.'" must be less than :max characters.'; 
     } 
     // dd($messages); 
     return $messages; 
    } 
} 

위한 코드이다.

public function storeSubjects(SubjectRequest $request) 
    { 
     $data = $request->all(); 

     // save logic 
     dd($data); 
    } 

문제 : 입력 데이터에서 일부 유효성 검사 오류가있을 때 내 양식을 채울 수 없습니다. 유효성 검사 오류가 발생하면 입력 필드가 비어 있습니다.

답변

0

문제

는 subject.blade.php, 귀하의 코드는 value 속성이 비어 있기 때문에 귀하의 필드 채우기되지

<input type="text" name="name[]" class="form-control" value="" placeholder="Subject" /> 

것 같습니다.

솔루션 :

이 문제를 해결하기 위해 이전 값을 전달합니다.

<input type="text" name="name[]" class="form-control" value="{{old('name[]')}}" placeholder="Subject" /> 
+0

바인딩. 유효성 검사를 위해 전달 된 채워진 값 배열이 필요합니다. – ahmednawazbutt