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

namespace IlluminateFoundationValidation;

use 
IlluminateHttpRequest;
use 
IlluminateHttpJsonResponse;
use 
IlluminateRoutingUrlGenerator;
use 
IlluminateContractsValidationFactory;
use 
IlluminateContractsValidationValidator;

trait 
ValidatesRequests
{
    
/**
     * The default error bag.
     *
     * @var string
     */
    
protected $validatesRequestErrorBag;

    
/**
     * Run the validation routine against the given validator.
     *
     * @param  IlluminateContractsValidationValidator|array  $validator
     * @param  IlluminateHttpRequest|null  $request
     * @return void
     */
    
public function validateWith($validatorRequest $request null)
    {
        
$request $request ?: app('request');

        if (
is_array($validator)) {
            
$validator $this->getValidationFactory()->make($request->all(), $validator);
        }

        if (
$validator->fails()) {
            
$this->throwValidationException($request$validator);
        }
    }

    
/**
     * Validate the given request with the given rules.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  array  $rules
     * @param  array  $messages
     * @param  array  $customAttributes
     * @return void
     */
    
public function validate(Request $request, array $rules, array $messages = [], array $customAttributes = [])
    {
        
$validator $this->getValidationFactory()->make($request->all(), $rules$messages$customAttributes);

        if (
$validator->fails()) {
            
$this->throwValidationException($request$validator);
        }
    }

    
/**
     * Validate the given request with the given rules.
     *
     * @param  string  $errorBag
     * @param  IlluminateHttpRequest  $request
     * @param  array  $rules
     * @param  array  $messages
     * @param  array  $customAttributes
     * @return void
     *
     * @throws IlluminateFoundationValidationValidationException
     */
    
public function validateWithBag($errorBagRequest $request, array $rules, array $messages = [], array $customAttributes = [])
    {
        
$this->withErrorBag($errorBag, function () use ($request$rules$messages$customAttributes) {
            
$this->validate($request$rules$messages$customAttributes);
        });
    }

    
/**
     * Throw the failed validation exception.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  IlluminateContractsValidationValidator  $validator
     * @return void
     *
     * @throws IlluminateFoundationValidationValidationException
     */
    
protected function throwValidationException(Request $request$validator)
    {
        throw new 
ValidationException($validator$this->buildFailedValidationResponse(
            
$request$this->formatValidationErrors($validator)
        ));
    }

    
/**
     * Create the response for when a request fails validation.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  array  $errors
     * @return IlluminateHttpResponse
     */
    
protected function buildFailedValidationResponse(Request $request, array $errors)
    {
        if ((
$request->ajax() && ! $request->pjax()) || $request->wantsJson()) {
            return new 
JsonResponse($errors422);
        }

        return 
redirect()->to($this->getRedirectUrl())
                        ->
withInput($request->input())
                        ->
withErrors($errors$this->errorBag());
    }

    
/**
     * Format the validation errors to be returned.
     *
     * @param  IlluminateContractsValidationValidator  $validator
     * @return array
     */
    
protected function formatValidationErrors(Validator $validator)
    {
        return 
$validator->errors()->getMessages();
    }

    
/**
     * Get the URL we should redirect to.
     *
     * @return string
     */
    
protected function getRedirectUrl()
    {
        return 
app(UrlGenerator::class)->previous();
    }

    
/**
     * Get a validation factory instance.
     *
     * @return IlluminateContractsValidationFactory
     */
    
protected function getValidationFactory()
    {
        return 
app(Factory::class);
    }

    
/**
     * Execute a Closure within with a given error bag set as the default bag.
     *
     * @param  string  $errorBag
     * @param  callable  $callback
     * @return void
     */
    
protected function withErrorBag($errorBag, callable $callback)
    {
        
$this->validatesRequestErrorBag $errorBag;

        
call_user_func($callback);

        
$this->validatesRequestErrorBag null;
    }

    
/**
     * Get the key to be used for the view error bag.
     *
     * @return string
     */
    
protected function errorBag()
    {
        return 
$this->validatesRequestErrorBag ?: 'default';
    }
}
Онлайн: 2
Реклама