2016-09-23 25 views
0

laravelを使用して1ページのサイトに連絡フォームを設定しようとしていますが、フォームを取得してユーザー入力を検証できず、フォームが持つ可能性があります。Laravel htmlフォームがフォーム入力を検証しない

email.blade.php:

<ul> 
    @foreach($errors->all() as $error) 
     <li>{{ $error }}</li> 
    @endforeach 
</ul> 
{!! Form::open(['route' => 'mail', 'method' => 'post', 'role' => 'form', 'id' => 'footer-form']) !!} 
<div class="form-group has-feedback"> 
    {!! Form::label('first_name', null, ['class' => 'sr-only']) !!} 
    {!! Form::text('first_name', null, ['class' => 'form-control', 'placeholder' => 'First Name']) !!} 
    <i class="fa fa-user form-control-feedback"></i> 
    @if($errors->has('first_name')) 
     {{ $errors->first('first_name') }} 
    @endif 
</div> 
<div class="form-group has-feedback"> 
    {!! Form::label('last_name', null, ['class' => 'sr-only']) !!} 
    {!! Form::text('last_name', null, ['class' => 'form-control', 'placeholder' => 'Last Name']) !!} 
    <i class="fa fa-user form-control-feedback"></i> 
    @if($errors->has('last_name')) 
     {{ $errors->first('last_name') }} 
    @endif 
</div> 
<div class="form-group has-feedback"> 
    {!! Form::label('email', null, ['class' => 'sr-only']) !!} 
    {!! Form::email('email', null, ['class' => 'form-control', 'placeholder' => 'Email address']) !!} 
    <i class="fa fa-envelope form-control-feedback"></i> 
    @if($errors->has('email')) 
     {{ $errors->first('email') }} 
    @endif 
</div> 
<div class="form-group has-feedback"> 
    {!! Form::label('textarea', null, ['class' => 'sr-only']) !!} 
    {!! Form::textarea('textarea', null, ['class' => 'form-control', 'rows' => 8, 'placeholder' => 'Message']) !!} 
    <i class="fa fa-pencil form-control-feedback"></i> 
    @if($errors->has('textarea')) 
     {{ $errors->first('textarea') }} 
    @endif 
</div> 

{!! Form::submit('Send', ['class' => 'btn btn-default']) !!} 

{!! Form::close() !!} 

Route: web.php:

Route::get('/ensignhospital', [ 
    'as' => 'home', 
    'uses' => '[email protected]' 
]); 


Route::group(['before' => 'guest'], function() { 
    /* 
    * CSRF Protection 
    * 
    * */ 
    Route::group(['before' => 'csrf'], function() { 

     Route::post('/ensignhospital', [ 
      'as' => 'mail', 
      'uses' => '[email protected]' 
     ]); 
    }); 


}); 

controller to handle for request:

class HomeController extends Controller { 

    public function home(){ 
     return View('welcome'); 
    } 



    public function postSendMail(ContactFormRequest $request){ 

     if($request->fails()){ 

      return Redirect::route('') 
       ->withErrors() 
       ->withInput(); 

     }else{ 

      return View('passed'); 
     } 


    } 

} 

The form request validator class:

class ContactFormRequest 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() 
    { 
     return [ 
      // 
      'first_name' => 'required', 
      'last_name'  => 'required', 
      'email'   => 'required|email', 
      'message'  => 'required' 
     ]; 
    } 
} 

問題有効な入力を入力しなかった場合、フォームは検証されません。ユーザー入力とremain at the form position on the web pageを検証するためのフォームが必要です。

please note:

私はsite rootむしろ1は、通常、新鮮laravelのインストール時に表示される通常のlocalhost/mylaravelprojec/publicよりlocalhost/mylaravelprojectとして表示するmy computer上にあるサイトを取得するために.htaccessファイルを使用していました。

答えて

0

ここドキュメントから:https://laravel.com/docs/5.3/validation#form-request-validation

So, how are the validation rules evaluated? All you need to do is type-hint 
the request on your controller method. The incoming form request is validated 
before the controller method is called, meaning you do not need to clutter 
your controller with any validation logic. 

Laravelは実際にフォーム上に残ることはありません。代わりに、エラーのあるリダイレクト、検証、リダイレクトを行います。コードif($request->fails())のチェックは必要ありません。

+0

こんにちは@ollieread、私は手動の方法を使用している理由を検証したユーザー入力値でメールを送信します。 –

関連する問題