Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php
Строк: 254
<?php

namespace IlluminateFoundationHttp;

use 
IlluminateAuthAccessAuthorizationException;
use 
IlluminateAuthAccessResponse;
use 
IlluminateContractsContainerContainer;
use 
IlluminateContractsValidationFactory as ValidationFactory;
use 
IlluminateContractsValidationValidatesWhenResolved;
use 
IlluminateContractsValidationValidator;
use 
IlluminateHttpRequest;
use 
IlluminateRoutingRedirector;
use 
IlluminateValidationValidatesWhenResolvedTrait;

class 
FormRequest extends Request implements ValidatesWhenResolved
{
    use 
ValidatesWhenResolvedTrait;

    
/**
     * The container instance.
     *
     * @var IlluminateContractsContainerContainer
     */
    
protected $container;

    
/**
     * The redirector instance.
     *
     * @var IlluminateRoutingRedirector
     */
    
protected $redirector;

    
/**
     * The URI to redirect to if validation fails.
     *
     * @var string
     */
    
protected $redirect;

    
/**
     * The route to redirect to if validation fails.
     *
     * @var string
     */
    
protected $redirectRoute;

    
/**
     * The controller action to redirect to if validation fails.
     *
     * @var string
     */
    
protected $redirectAction;

    
/**
     * The key to be used for the view error bag.
     *
     * @var string
     */
    
protected $errorBag 'default';

    
/**
     * Indicates whether validation should stop after the first rule failure.
     *
     * @var bool
     */
    
protected $stopOnFirstFailure false;

    
/**
     * The validator instance.
     *
     * @var IlluminateContractsValidationValidator
     */
    
protected $validator;

    
/**
     * Get the validator instance for the request.
     *
     * @return IlluminateContractsValidationValidator
     */
    
protected function getValidatorInstance()
    {
        if (
$this->validator) {
            return 
$this->validator;
        }

        
$factory $this->container->make(ValidationFactory::class);

        if (
method_exists($this'validator')) {
            
$validator $this->container->call([$this'validator'], compact('factory'));
        } else {
            
$validator $this->createDefaultValidator($factory);
        }

        if (
method_exists($this'withValidator')) {
            
$this->withValidator($validator);
        }

        if (
method_exists($this'after')) {
            
$validator->after($this->container->call(
                
$this->after(...),
                [
'validator' => $validator]
            ));
        }

        
$this->setValidator($validator);

        return 
$this->validator;
    }

    
/**
     * Create the default validator instance.
     *
     * @param  IlluminateContractsValidationFactory  $factory
     * @return IlluminateContractsValidationValidator
     */
    
protected function createDefaultValidator(ValidationFactory $factory)
    {
        
$rules $this->validationRules();

        
$validator $factory->make(
            
$this->validationData(),
            
$rules,
            
$this->messages(),
            
$this->attributes(),
        )->
stopOnFirstFailure($this->stopOnFirstFailure);

        if (
$this->isPrecognitive()) {
            
$validator->setRules(
                
$this->filterPrecognitiveRules($validator->getRulesWithoutPlaceholders())
            );
        }

        return 
$validator;
    }

    
/**
     * Get data to be validated from the request.
     *
     * @return array
     */
    
public function validationData()
    {
        return 
$this->all();
    }

    
/**
     * Get the validation rules for this form request.
     *
     * @return array
     */
    
protected function validationRules()
    {
        return 
method_exists($this'rules') ? $this->container->call([$this'rules']) : [];
    }

    
/**
     * Handle a failed validation attempt.
     *
     * @param  IlluminateContractsValidationValidator  $validator
     * @return void
     *
     * @throws IlluminateValidationValidationException
     */
    
protected function failedValidation(Validator $validator)
    {
        
$exception $validator->getException();

        throw (new 
$exception($validator))
                    ->
errorBag($this->errorBag)
                    ->
redirectTo($this->getRedirectUrl());
    }

    
/**
     * Get the URL to redirect to on a validation error.
     *
     * @return string
     */
    
protected function getRedirectUrl()
    {
        
$url $this->redirector->getUrlGenerator();

        if (
$this->redirect) {
            return 
$url->to($this->redirect);
        } elseif (
$this->redirectRoute) {
            return 
$url->route($this->redirectRoute);
        } elseif (
$this->redirectAction) {
            return 
$url->action($this->redirectAction);
        }

        return 
$url->previous();
    }

    
/**
     * Determine if the request passes the authorization check.
     *
     * @return bool
     *
     * @throws IlluminateAuthAccessAuthorizationException
     */
    
protected function passesAuthorization()
    {
        if (
method_exists($this'authorize')) {
            
$result $this->container->call([$this'authorize']);

            return 
$result instanceof Response $result->authorize() : $result;
        }

        return 
true;
    }

    
/**
     * Handle a failed authorization attempt.
     *
     * @return void
     *
     * @throws IlluminateAuthAccessAuthorizationException
     */
    
protected function failedAuthorization()
    {
        throw new 
AuthorizationException;
    }

    
/**
     * Get a validated input container for the validated input.
     *
     * @param  array|null  $keys
     * @return IlluminateSupportValidatedInput|array
     */
    
public function safe(?array $keys null)
    {
        return 
is_array($keys)
                    ? 
$this->validator->safe()->only($keys)
                    : 
$this->validator->safe();
    }

    
/**
     * Get the validated data from the request.
     *
     * @param  array|int|string|null  $key
     * @param  mixed  $default
     * @return mixed
     */
    
public function validated($key null$default null)
    {
        return 
data_get($this->validator->validated(), $key$default);
    }

    
/**
     * Get custom messages for validator errors.
     *
     * @return array
     */
    
public function messages()
    {
        return [];
    }

    
/**
     * Get custom attributes for validator errors.
     *
     * @return array
     */
    
public function attributes()
    {
        return [];
    }

    
/**
     * Set the Validator instance.
     *
     * @param  IlluminateContractsValidationValidator  $validator
     * @return $this
     */
    
public function setValidator(Validator $validator)
    {
        
$this->validator $validator;

        return 
$this;
    }

    
/**
     * Set the Redirector instance.
     *
     * @param  IlluminateRoutingRedirector  $redirector
     * @return $this
     */
    
public function setRedirector(Redirector $redirector)
    {
        
$this->redirector $redirector;

        return 
$this;
    }

    
/**
     * Set the container implementation.
     *
     * @param  IlluminateContractsContainerContainer  $container
     * @return $this
     */
    
public function setContainer(Container $container)
    {
        
$this->container $container;

        return 
$this;
    }
}
Онлайн: 1
Реклама