2016-11-14 5 views
0

コード私PagesController.php $requestLaravel 5.2でビューに、コントローラからのエラー検証メッセージを送信する方法

public function postIndex(Request $request){ 

    $this->validate($request, [ 
      'name' => 'required', 
      'email' => 'required|email', 
      'phone' => 'min:3', 
      'message' => 'min:10', 
    ]); 

    $data = array(
      'name' => $request->name, 
      'email' => $request->email, 
      'phone' => $request->phone, 
      'bodyMessage' => $request->message, 
      'subject' => 'Some subject', 
    ); 

    Mail::send('emails.contact', $data, function($message) use ($data){ 
     $message->from($data['email'], "Hello"); 
     $message->to('[email protected]'); 
     $message->subject($data['subject']); 
    }); 

    Session::flash('success', 'Email was sent'); 

    return redirect('/'); 
} 

でフォームの入力からのデータです。いくつかのエラーがバリデーションビューにある場合、ビューは '/'にリダイレクトされます。

私の質問は、エラーメッセージを表示する方法ですか?

+0

私は非常にはっきりとhttps://laravel.com/docs/5.2/validation#other-validation-approachesを参照してください...ちょうど –

答えて

0
Session::flash('success', 'Email was sent'); 
// this will set messages in session 

return redirect('/'); 
// this will redirect to the given url 

とビュー上のあなたがこれらのメッセージを表示することができますように:

if(Session::has('success')) 
{ 
    echo '<div class="alert alert-danger">'. Session::get("success").'</div>'; 
} 

注:セッション::フラッシュ()のメッセージは一つだけの要求のためにアクティブのままになります。ブレード・ファイルに次のコードを追加することができますvalidation error表示するには、あなたのビューで

0

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

更新

一つの理由は、webミドルウェアがあなたのケースで2回を適用していることをすることができます。 LaravelはデフォルトでWebミドルウェアをapp/Providers/RoutesServiceProvider.phpに追加し、再度routes.phpに追加します routes.phpからwebミドルウェアを削除してみてください。

+0

を読んでください問題は私がビューのトレイルで$エラーを印刷しようとすると何もありません。 – Tomasz

+0

更新された回答を確認してください。 –

+0

私はroutes.phpにミドルウェアを持っていません – Tomasz

関連する問題