Вход Регистрация
Файл: gapps/vendor/prettus/laravel-validation/src/Prettus/Validator/AbstractValidator.php
Строк: 110
<?php namespace PrettusValidator;

use 
IlluminateSupportMessageBag;
use 
PrettusValidatorContractsValidatorInterface;
use 
PrettusValidatorExceptionsValidatorException;

/**
 * Class AbstractValidator
 * @package PrettusValidator
 */
abstract class AbstractValidator implements ValidatorInterface {

    
/**
     * @var int
     */
    
protected $id null;

    
/**
     * Validator
     *
     * @var object
     */
    
protected $validator;

    
/**
     * Data to be validated
     *
     * @var array
     */
    
protected $data = array();

    
/**
     * Validation Rules
     *
     * @var array
     */
    
protected $rules = array();

    
/**
     * Validation errors
     *
     * @var MessageBag
     */
    
protected $errors = array();


    
/**
     * Set Id
     *
     * @param $id
     * @return $this
     */
    
public function setId($id){
        
$this->id $id;
        return 
$this;
    }

    
/**
     * Set data to validate
     *
     * @param array $data
     * @return $this
     */
    
public function with(array $data)
    {
        
$this->data $data;

        return 
$this;
    }

    
/**
     * Return errors
     *
     * @return array
     */
    
public function errors()
    {
        return 
$this->errorsBag()->all();
    }

    
/**
     * Errors
     *
     * @return MessageBag
     */
    
public function errorsBag()
    {
        return 
$this->errors;
    }

    
/**
     * Pass the data and the rules to the validator
     *
     * @param string $action
     * @return boolean
     */
    
abstract public function passes$action null );

    
/**
     * Pass the data and the rules to the validator or throws ValidatorException
     *
     * @throws ValidatorException
     * @param string $action
     * @return boolean
     */
    
public function passesOrFail($action null)
    {
        if(  !
$this->passes($action) ){
            throw new 
ValidatorException$this->errorsBag() );
        }

        return 
true;
    }

    
/**
     * Get rule for validation by action ValidatorInterface::RULE_CREATE or ValidatorInterface::RULE_UPDATE
     *
     * Default rule: ValidatorInterface::RULE_CREATE
     *
     * @param null $action
     * @return array
     */
    
public function getRules($action null){

        
$rules $this->rules;

        if( isset(
$this->rules[$action]) ){
            
$rules $this->rules[$action];
        }

        return 
$this->parserValidationRules($rules$this->id);
    }

    
/**
     * Set Rules for Validation
     *
     * @param array $rules
     * @return $this
     */
    
public function setRules(array $rules)
    {
        
$this->rules $rules;
        return 
$this;
    }

    
/**
     * Parser Validation Rules
     *
     * @param $rules
     * @param null $id
     * @return array
     */
    
protected function parserValidationRules($rules$id null)
    {

        if(
$id === null)
        {
            return 
$rules;
        }

        
array_walk($rules, function(&$rules$field) use ($id)
        {
            if(!
is_array($rules))
            {
                
$rules explode("|"$rules);
            }

            foreach(
$rules as $ruleIdx => $rule)
            {
                
// get name and parameters
                
@list($name$params) = array_pad(explode(":"$rule), 2null);

                
// only do someting for the unique rule
                
if(strtolower($name) != "unique") {
                    continue; 
// continue in foreach loop, nothing left to do here
                
}

                
$p array_map("trim"explode(","$params));

                
// set field name to rules key ($field) (laravel convention)
                
if(!isset($p[1])) {
                    
$p[1] = $field;
                }

                
// set 3rd parameter to id given to getValidationRules()
                
$p[2] = $id;

                
$params implode(","$p);
                
$rules[$ruleIdx] = $name.":".$params;
            }
        });

        return 
$rules;
    }

}
Онлайн: 1
Реклама