/**
  * Creates JsValidator instance based on FormRequest.
  *
  * @param $formRequest
  * @param null $selector
  *
  * @return Manager
  *
  * @throws FormRequestArgumentException
  */
 public function formRequest($formRequest, $selector = null)
 {
     if (!is_subclass_of($formRequest, 'Illuminate\\Foundation\\Http\\FormRequest')) {
         throw new FormRequestArgumentException((string) $formRequest);
     }
     if (is_string($formRequest)) {
         $formRequest = $this->createFormRequest($formRequest);
     }
     $rules = method_exists($formRequest, 'rules') ? $formRequest->rules() : [];
     $validator = $this->validator->make([], $rules, $formRequest->messages(), $formRequest->attributes());
     return $this->jsValidator($validator, $selector);
 }
 /**
  * Register the validation factory.
  *
  * @return void
  */
 protected function registerValidationFactory()
 {
     $this->app->singleton('jsvalidator.validator', function ($app) {
         $currentValidator = $app['validator'];
         $validator = new Factory($currentValidator, $app);
         // The session manager is responsible to secure Ajax validations
         if (isset($app['session.store'])) {
             $validator->setSessionStore($app['session.store']);
         }
         $validator->setJsRemoteEnabled(!$app['config']->get('jsvalidation.disable_remote_validation'));
         return $validator;
     });
     $this->app->booting(function ($app) {
         $app['validator'] = $app['jsvalidator.validator'];
     });
 }