2017-05-15 1 views
0

Laravel을 사용하고 있습니다. 5.4 제 작성 양식이 다중 언어 용 다중 필드입니다. 내 양식 필드의 이름은 변수입니다 :laravel에서 변수 이름으로 양식을 확인할 수 없습니다. 5.4

{!! Form::open(['route' => 'pages.store','files'=>true]) !!} 
      @if(isset($languages) && $languages->count() > 0) 
       @foreach($languages as $language) 
        <div class="form-group"> 
         {!! Form::label('subject_'.$language->code, 'subject in '.$language->name) !!} 
         <div class="form-line"> 
          {!! Form::text('subject_'.$language->code,old('subject'),['class'=>'form-control']) !!} 
         </div> 
        </div> 
        <div class="form-group"> 
         <!-- TinyMCE --> 
        {!! Form::textarea('content_'.$language->code,'',['class'=>'tinymce']) !!} 
        <!-- #END# TinyMCE --> 
        </div> 
        @if (!$loop->last) 
         <hr class="style18"> 
        @endif 
       @endforeach 
       <div class="form-group"> 
        {!! Form::submit('save change',['class'=>'btn btn-primary']) !!} 
       </div> 
       {!! Form::close() !!} 

내 제어 코드 :

public function store(Request $request) 
{ 
      $validator = Validator::make($request->all(), [ 
       'subject' => 'required|max:255', 
       'content' => 'required|max:255',     
      ]); 
    $languages = Languages::all(); 
    $page = new Page(); 
    $page->save(); // Eloquent 

    foreach ($languages as $language) { 
     $pageTrans = new PageTrans(); 
     $pageTrans['page_id']= $page->id; 
     $pageTrans['locale'] = $language->locale; 
     $pageTrans['subject'] = $request->input('subject_' . $language->code); 
     $pageTrans['content'] = $request->input('content_' . $language->code); 
     $pageTrans->save(); // Eloquent 
    } 

    return redirect(route('pages.index')); 
} 

하지만 문제 validat와하지가의 feild 이름을 감지합니다. 이 작업을 수행 할 수있는 더 좋은 방법이나 해결책을 알고 있습니까?

답변

0

컨트롤러를 이와 같이 변경할 수 있습니다. 나는 시험하지 않았다. 그것에 문제가 있으면 알려주십시오.

$languages = Languages::all(); 
    if($languages->count()){ 
     $data = []; 
     foreach ($languages as $language) { 
      $data['subject_'.$language->code] = 'required|max:255'; 
      $data['content_'.$language->code] = 'required'; 
     } 
     $validator = Validator::make($request->all(), $data); 
     if ($validator->fails()) { 
      return redirect(route('pages.store')) 
         ->withErrors($validator) 
         ->withInput(); 
     }else{ 
      $page = new Page(); 
      $page->save(); // Eloquent 

      foreach ($languages as $language) { 
       $pageTrans = new PageTrans(); 
       $pageTrans['page_id']= $page->id; 
       $pageTrans['locale'] = $language->locale; 
       $pageTrans['subject'] = $request->input('subject_' . $language->code); 
       $pageTrans['content'] = $request->input('content_' . $language->code); 
       $pageTrans->save(); // Eloquent 
      } 
      return redirect(route('pages.index')); 
     } 
    } 

고맙습니다!

관련 문제