2017-05-15 24 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に問題はなくフェイルド名前を検出します。これを行うためのソリューションまたはよりよい方法をご存じですか?

答えて

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')); 
     } 
    } 

ありがとうございます!

関連する問題