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

namespace IlluminateFoundationHttp;

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

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);
        }

        
$this->setValidator($validator);

        return 
$this->validator;
    }

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

        if (
$this->isPrecognitive()) {
            
$rules $this->filterPrecognitiveRules($rules);
        }

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

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

    
/**
     * Handle a failed validation attempt.
     *
     * @param  IlluminateContractsValidationValidator  $validator
     * @return void
     *
     * @throws IlluminateValidationValidationException
     */
    
protected function failedValidation(Validator $validator)
    {
        throw (new 
ValidationException($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  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
Реклама