|
|
@@ -37,7 +37,7 @@ use Cake\ORM\Marshaller;
|
|
|
use Cake\ORM\RulesChecker;
|
|
|
use Cake\ORM\Rule\IsUnique;
|
|
|
use Cake\Utility\Inflector;
|
|
|
-use Cake\Validation\Validator;
|
|
|
+use Cake\Validation\ValidatorAwareTrait;
|
|
|
use InvalidArgumentException;
|
|
|
use RuntimeException;
|
|
|
|
|
|
@@ -121,6 +121,7 @@ class Table implements RepositoryInterface, EventListenerInterface
|
|
|
{
|
|
|
|
|
|
use EventManagerTrait;
|
|
|
+ use ValidatorAwareTrait;
|
|
|
|
|
|
/**
|
|
|
* Name of default validation set.
|
|
|
@@ -201,13 +202,6 @@ class Table implements RepositoryInterface, EventListenerInterface
|
|
|
protected $_registryAlias;
|
|
|
|
|
|
/**
|
|
|
- * A list of validation objects indexed by name
|
|
|
- *
|
|
|
- * @var array
|
|
|
- */
|
|
|
- protected $_validators = [];
|
|
|
-
|
|
|
- /**
|
|
|
* The domain rules to be applied to entities saved by this table
|
|
|
*
|
|
|
* @var \Cake\ORM\RulesChecker
|
|
|
@@ -1162,77 +1156,6 @@ class Table implements RepositoryInterface, EventListenerInterface
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Returns the validation rules tagged with $name. It is possible to have
|
|
|
- * multiple different named validation sets, this is useful when you need
|
|
|
- * to use varying rules when saving from different routines in your system.
|
|
|
- *
|
|
|
- * There are two different ways of creating and naming validation sets: by
|
|
|
- * creating a new method inside your own Table subclass, or by building
|
|
|
- * the validator object yourself and storing it using this method.
|
|
|
- *
|
|
|
- * For example, if you wish to create a validation set called 'forSubscription',
|
|
|
- * you will need to create a method in your Table subclass as follows:
|
|
|
- *
|
|
|
- * ```
|
|
|
- * public function validationForSubscription($validator)
|
|
|
- * {
|
|
|
- * return $validator
|
|
|
- * ->add('email', 'valid-email', ['rule' => 'email'])
|
|
|
- * ->add('password', 'valid', ['rule' => 'notEmpty'])
|
|
|
- * ->requirePresence('username');
|
|
|
- * }
|
|
|
- * ```
|
|
|
- *
|
|
|
- * Otherwise, you can build the object by yourself and store it in the Table object:
|
|
|
- *
|
|
|
- * ```
|
|
|
- * $validator = new \Cake\Validation\Validator($table);
|
|
|
- * $validator
|
|
|
- * ->add('email', 'valid-email', ['rule' => 'email'])
|
|
|
- * ->add('password', 'valid', ['rule' => 'notEmpty'])
|
|
|
- * ->allowEmpty('bio');
|
|
|
- * $table->validator('forSubscription', $validator);
|
|
|
- * ```
|
|
|
- *
|
|
|
- * You can implement the method in `validationDefault` in your Table subclass
|
|
|
- * should you wish to have a validation set that applies in cases where no other
|
|
|
- * set is specified.
|
|
|
- *
|
|
|
- * @param string $name the name of the validation set to return
|
|
|
- * @param \Cake\Validation\Validator|null $validator The validator instance to store,
|
|
|
- * use null to get a validator.
|
|
|
- * @return \Cake\Validation\Validator
|
|
|
- */
|
|
|
- public function validator($name = self::DEFAULT_VALIDATOR, Validator $validator = null)
|
|
|
- {
|
|
|
- if ($validator === null && isset($this->_validators[$name])) {
|
|
|
- return $this->_validators[$name];
|
|
|
- }
|
|
|
-
|
|
|
- if ($validator === null) {
|
|
|
- $validator = new Validator();
|
|
|
- $validator = $this->{'validation' . ucfirst($name)}($validator);
|
|
|
- $this->dispatchEvent('Model.buildValidator', compact('validator', 'name'));
|
|
|
- }
|
|
|
-
|
|
|
- $validator->provider('table', $this);
|
|
|
- return $this->_validators[$name] = $validator;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Returns the default validator object. Subclasses can override this function
|
|
|
- * to add a default validation set to the validator object.
|
|
|
- *
|
|
|
- * @param \Cake\Validation\Validator $validator The validator that can be modified to
|
|
|
- * add some rules to it.
|
|
|
- * @return \Cake\Validation\Validator
|
|
|
- */
|
|
|
- public function validationDefault(Validator $validator)
|
|
|
- {
|
|
|
- return $validator;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
* {@inheritDoc}
|
|
|
*/
|
|
|
public function deleteAll($conditions)
|