2017-11-16 11 views
0

私は申請書を持っています。このフォームには、「名前」、「メール」、「国」などいくつかのフィールドがあります。ログファイルの一部のフィールドでのみエラーを返すLaravelフォーム

Laravelはメールフィールドのエラーを返すだけです。例えば、The email field is required.。他のすべてのために、それだけでページを更新し、私のlaravel.logファイルで、私は次のエラーを取得する:ここで

[2017-11-16 08:52:30] production.ERROR: Illuminate\Validation\ValidationException: The given data failed to pass validation. in C:\xampp\htdocs\series\commend-me\CommendMe\vendor\laravel\framework\src\Illuminate\Foundation\Validation\ValidatesRequests.php:89

は私のルートです:

Route::post('/postapply', [ 
    'uses' => '\CommendMe\Http\Controllers\[email protected]', 
    'as' => 'post.apply', 
    'middleware' => ['auth'], 
]); 

と私のコントローラ:

public function postApply(Request $request) { 

    $this->validate($request, [ 
     'name' => 'required|alpha_num|max:40|min:2',    
     'country' => 'required|alpha_num|max:100|min:2',       
     'body' => 'required|string|max:2000', 
     'mature' => 'required', 
     'email' => 'required|email|max:255', 
    ]);    



    dd("test"); 

ddはこのインスタンスでは「test」を返しません。さらに、検証では電子メールフィールドのエラーのみがリダイレクトされ、電子メールフィールドがコントローラ内の別の名前に変更された場合、エラーがログファイルに送信されます。

どうしてですか?

EDIT:

が要求されるようにマークアップを追加する:($要求 - >すべての())

<form role="form" method="post" action="{{ route ('post.apply') }}"> 
    <div class="submitArtSection"> 
    <div class="submitRequired submitRequiredTitle">Required</div> 
     <div class="border-bot"> 
      <input class="submitArtTitle" type="text" name="name" maxlength="39" placeholder="Name"> 
     </div> 
    <div class="submitRequired submitRequiredTitle">Required</div>   
     <div class="border-bot"> 
      <input class="submitArtTitle" type="text" maxlength="255" name="email" placeholder="Email"> 
     </div>  
    <div class="submitRequired submitRequiredTitle">Required</div>   
     <div class="border-bot"> 
      <input class="submitArtTitle" type="text" maxlength="255" name="country" placeholder="Country"> 
     </div> 
    <div class="submitRequired submitRequiredTitle">Required</div>   
     <div> 
      <textarea name="body" style="height: 175px;" maxlength="1980" placeholder="Tell us about yourself..."></textarea>  
     </div> 
    </div> 

    <div class="submitArtSection submitArtCheckers"> 
    <div class="submitRequired">Required</div> 
     <div> 
      <span class="submitArtCaption submitArtRestrictionsHeader"> 
       Age 
      </span> 
      <span> 
       <label> 
        <input type="radio" name="mature" value="0"> 
        Under 18 
        <span class="checkmark"></span> 
       </label> 

       <label> 
       <input type="radio" name="mature" value="1"> 
        18+ 
        <span class="checkmark"></span> 
       </label>  
      </span>    
     </div> 
    </div> 


    <div class="text-center"> 
     <button id="saveImage" class="pointer">Submit</button> 
    </div> 
    <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
</form>  

DD。メソッドの開始時に次のものが返される

array:5 [▼ 
    "name" => "" 
    "email" => "" 
    "country" => "" 
    "body" => "" 
    "_token" => "HKJ51CMvteYOD0OG79SQiRjpeTup9NNWvTfw1IWB" 
] 
+0

フォーム内の入力ごとにヘルプブロックが含まれていますか?たぶんあなたは電子メールの入力にそれを含めただけです。 – Amarnasan

+0

問題を見つけるのに役立つフォームのコードを表示できますか? – milo526

+0

メソッドの最初の行に 'dd($ request-> all())'を追加し、他のすべてのフィールドを渡しているかどうかを確認します。 – SteD

答えて

0

私は私のマークアップでエラーをサイクリングいませんでした。

@if (count($errors) > 0) 
    <div class="alert alert-info" role="alert"> 
     {{ $errors->first() }} 
     <a href="#" class="alert-close" data-dismiss="alert" aria-label="close">×</a> 
    </div> 
@endif 

私は私のテンプレートページも(ログイン用)、電子メールという名前の電子メールのフィールドを持ち、そしてそれのためにエラーをサイクリングしたためつまり、実現しなかった理由。したがって、同じ名前のフォームの電子メールだけがエラーをリダイレクトしていました。

0

入力のタイプをテキストではなく電子メールに変更してみてください。あなたが提出作られたときには、おそらくテキスト値を入力し、Laravelはすでに電子メールの種類

<div class="border-bot"> 
      <input class="submitArtTitle" type="text" maxlength="255" name="email" placeholder="Email"> 
     </div>  

の検証を持って

TO
<div class="border-bot"> 
      <input class="submitArtTitle" type="email" maxlength="255" name="email" placeholder="Email"> 
     </div> 
+0

何も変更されません。私は電子メールが働く唯一のものであることを指摘したいと思いますので、それを変更することは何もしません。 –

+0

$ this-> validate($ request、['name' => '必須| alpha_num | max:40 | min:2'、 'country' => '必須| alpha_num | max:100 | min:2' 、 'body' => '必須|文字列|最大:2000'、 '成熟' => '必須'、 'メール' => '必須|メール|最大:255'、 ]);コントローラーが電子メールのタイプを探しているので、少なくともそれを変更して参照したいと思うかもしれません – Pianistprogrammer

+0

それはそれがどのように動作するかではありません。 type = "text"の場合でも、有効な電子メール形式であることを確認するだけです。だから、もしあなたが "test @ gmail"と書いていたら、エラーを返すでしょう(そして、私はちょうどチェックします)。 –

関連する問題