Class RulesChecker

ORM flavoured rules checker.

Adds ORM related features to the RulesChecker class.

Namespace: Cake\ORM

Constants summary

  • string
    CREATE
    'create'
  • string
    DELETE
    'delete'
  • string
    UPDATE
    'update'

Properties summary

  • $_createRules protected
    \Cake\Datasource\RuleInvoker[]

    The list of rules to check during create operations

  • $_deleteRules protected
    \Cake\Datasource\RuleInvoker[]

    The list of rules to check during delete operations

  • $_options protected
    array

    List of options to pass to every callable rule

  • $_rules protected
    \Cake\Datasource\RuleInvoker[]

    The list of rules to be checked on both create and update operations

  • $_updateRules protected
    \Cake\Datasource\RuleInvoker[]

    The list of rules to check during update operations

  • $_useI18n protected
    bool

    Whether or not to use I18n functions for translating default error messages

Method Summary

  • __construct() public

    Constructor. Takes the options to be passed to all rules.

  • _addError() protected

    Utility method for decorating any callable so that if it returns false, the correct property in the entity is marked as invalid.

  • _addLinkConstraintRule() protected

    Adds a link constraint rule.

  • _checkRules() protected

    Used by top level functions checkDelete, checkCreate and checkUpdate, this function iterates an array containing the rules to be checked and checks them all.

  • add() public

    Adds a rule that will be applied to the entity both on create and update operations.

  • addCreate() public

    Adds a rule that will be applied to the entity on create operations.

  • addDelete() public

    Adds a rule that will be applied to the entity on delete operations.

  • addUpdate() public

    Adds a rule that will be applied to the entity on update operations.

  • check() public

    Runs each of the rules by passing the provided entity and returns true if all of them pass. The rules to be applied are depended on the $mode parameter which can only be RulesChecker::CREATE, RulesChecker::UPDATE or RulesChecker::DELETE

  • checkCreate() public

    Runs each of the rules by passing the provided entity and returns true if all of them pass. The rules selected will be only those specified to be run on 'create'

  • checkDelete() public

    Runs each of the rules by passing the provided entity and returns true if all of them pass. The rules selected will be only those specified to be run on 'delete'

  • checkUpdate() public

    Runs each of the rules by passing the provided entity and returns true if all of them pass. The rules selected will be only those specified to be run on 'update'

  • existsIn() public

    Returns a callable that can be used as a rule for checking that the values extracted from the entity to check exist as the primary key in another table.

  • isLinkedTo() public

    Validates whether links to the given association exist.

  • isNotLinkedTo() public

    Validates whether links to the given association do not exist.

  • isUnique() public

    Returns a callable that can be used as a rule for checking the uniqueness of a value in the table.

  • validCount() public

    Validates the count of associated records.

Method Detail

__construct() public

__construct(array $options)

Constructor. Takes the options to be passed to all rules.

Parameters

array $options optional

The options to pass to every rule

_addError() protected

_addError(callable $rule, mixed $name, array $options)

Utility method for decorating any callable so that if it returns false, the correct property in the entity is marked as invalid.

Parameters

callable $rule

The rule to decorate

string|array|null $name optional

The alias for a rule or an array of options

array $options optional

The options containing the error message and field.

Returns

\Cake\Datasource\RuleInvoker

_addLinkConstraintRule() protected

_addLinkConstraintRule(mixed $association, ?string $errorField, ?string $message, string $linkStatus, string $ruleName)

Adds a link constraint rule.

Parameters

\Cake\ORM\Association|string $association

The association to check for links.

string|null $errorField

The name of the property to use for setting possible errors. When absent, the name is inferred from $association.

string|null $message

The error message to show in case the rule does not pass.

string $linkStatus

The ink status required for the check to pass.

string $ruleName

The alias/name of the rule.

Returns

\Cake\Datasource\RuleInvoker

Throws

InvalidArgumentException
In case the `$association` argument is of an invalid type.

See Also

\Cake\ORM\RulesChecker::isLinkedTo()

\Cake\ORM\RulesChecker::isNotLinkedTo()

\Cake\ORM\Rule\LinkConstraint::STATUS_LINKED

\Cake\ORM\Rule\LinkConstraint::STATUS_NOT_LINKED

_checkRules() protected

_checkRules(\Cake\Datasource\EntityInterface $entity, array $options, array $rules)

Used by top level functions checkDelete, checkCreate and checkUpdate, this function iterates an array containing the rules to be checked and checks them all.

Parameters

\Cake\Datasource\EntityInterface $entity

The entity to check for validity.

array $options optional

Extra options to pass to checker functions.

\Cake\Datasource\RuleInvoker[] $rules optional

The list of rules that must be checked.

Returns

bool

add() public

add(callable $rule, mixed $name, array $options)

Adds a rule that will be applied to the entity both on create and update operations.

Options

The options array accept the following special keys:

  • errorField: The name of the entity field that will be marked as invalid if the rule does not pass.
  • message: The error message to set to errorField if the rule does not pass.

Parameters

callable $rule

A callable function or object that will return whether the entity is valid or not.

string|array|null $name optional

The alias for a rule, or an array of options.

array $options optional

List of extra options to pass to the rule callable as second argument.

Returns

$this

addCreate() public

addCreate(callable $rule, mixed $name, array $options)

Adds a rule that will be applied to the entity on create operations.

Options

The options array accept the following special keys:

  • errorField: The name of the entity field that will be marked as invalid if the rule does not pass.
  • message: The error message to set to errorField if the rule does not pass.

Parameters

callable $rule

A callable function or object that will return whether the entity is valid or not.

string|array|null $name optional

The alias for a rule or an array of options.

array $options optional

List of extra options to pass to the rule callable as second argument.

Returns

$this

addDelete() public

addDelete(callable $rule, mixed $name, array $options)

Adds a rule that will be applied to the entity on delete operations.

Options

The options array accept the following special keys:

  • errorField: The name of the entity field that will be marked as invalid if the rule does not pass.
  • message: The error message to set to errorField if the rule does not pass.

Parameters

callable $rule

A callable function or object that will return whether the entity is valid or not.

string|array|null $name optional

The alias for a rule, or an array of options.

array $options optional

List of extra options to pass to the rule callable as second argument.

Returns

$this

addUpdate() public

addUpdate(callable $rule, mixed $name, array $options)

Adds a rule that will be applied to the entity on update operations.

Options

The options array accept the following special keys:

  • errorField: The name of the entity field that will be marked as invalid if the rule does not pass.
  • message: The error message to set to errorField if the rule does not pass.

Parameters

callable $rule

A callable function or object that will return whether the entity is valid or not.

string|array|null $name optional

The alias for a rule, or an array of options.

array $options optional

List of extra options to pass to the rule callable as second argument.

Returns

$this

check() public

check(\Cake\Datasource\EntityInterface $entity, string $mode, array $options)

Runs each of the rules by passing the provided entity and returns true if all of them pass. The rules to be applied are depended on the $mode parameter which can only be RulesChecker::CREATE, RulesChecker::UPDATE or RulesChecker::DELETE

Parameters

\Cake\Datasource\EntityInterface $entity

The entity to check for validity.

string $mode

Either 'create, 'update' or 'delete'.

array $options optional

Extra options to pass to checker functions.

Returns

bool

Throws

InvalidArgumentException
if an invalid mode is passed.

checkCreate() public

checkCreate(\Cake\Datasource\EntityInterface $entity, array $options)

Runs each of the rules by passing the provided entity and returns true if all of them pass. The rules selected will be only those specified to be run on 'create'

Parameters

\Cake\Datasource\EntityInterface $entity

The entity to check for validity.

array $options optional

Extra options to pass to checker functions.

Returns

bool

checkDelete() public

checkDelete(\Cake\Datasource\EntityInterface $entity, array $options)

Runs each of the rules by passing the provided entity and returns true if all of them pass. The rules selected will be only those specified to be run on 'delete'

Parameters

\Cake\Datasource\EntityInterface $entity

The entity to check for validity.

array $options optional

Extra options to pass to checker functions.

Returns

bool

checkUpdate() public

checkUpdate(\Cake\Datasource\EntityInterface $entity, array $options)

Runs each of the rules by passing the provided entity and returns true if all of them pass. The rules selected will be only those specified to be run on 'update'

Parameters

\Cake\Datasource\EntityInterface $entity

The entity to check for validity.

array $options optional

Extra options to pass to checker functions.

Returns

bool

existsIn() public

existsIn(mixed $field, mixed $table, mixed $message)

Returns a callable that can be used as a rule for checking that the values extracted from the entity to check exist as the primary key in another table.

This is useful for enforcing foreign key integrity checks.

Example:

$rules->add($rules->existsIn('author_id', 'Authors', 'Invalid Author'));

$rules->add($rules->existsIn('site_id', new SitesTable(), 'Invalid Site'));

Available $options are error 'message' and 'allowNullableNulls' flag. 'message' sets a custom error message. Set 'allowNullableNulls' to true to accept composite foreign keys where one or more nullable columns are null.

Parameters

string|string[] $field

The field or list of fields to check for existence by primary key lookup in the other table.

\Cake\ORM\Table|\Cake\ORM\Association|string $table

The table name where the fields existence will be checked.

string|array|null $message optional

The error message to show in case the rule does not pass. Can also be an array of options. When an array, the 'message' key can be used to provide a message.

Returns

\Cake\Datasource\RuleInvoker

isLinkedTo() public

isLinkedTo(mixed $association, ?string $field, ?string $message)

Validates whether links to the given association exist.

Example:

$rules->addUpdate($rules->isLinkedTo('Articles', 'article'));

On a Comments table that has a belongsTo Articles association, this check would ensure that comments can only be edited as long as they are associated to an existing article.

Parameters

\Cake\ORM\Association|string $association

The association to check for links.

string|null $field optional

The name of the association property. When supplied, this is the name used to set possible errors. When absent, the name is inferred from $association.

string|null $message optional

The error message to show in case the rule does not pass.

Returns

\Cake\Datasource\RuleInvoker

isNotLinkedTo() public

isNotLinkedTo(mixed $association, ?string $field, ?string $message)

Validates whether links to the given association do not exist.

Example:

$rules->addDelete($rules->isNotLinkedTo('Comments', 'comments'));

On a Articles table that has a hasMany Comments association, this check would ensure that articles can only be deleted when no associated comments exist.

Parameters

\Cake\ORM\Association|string $association

The association to check for links.

string|null $field optional

The name of the association property. When supplied, this is the name used to set possible errors. When absent, the name is inferred from $association.

string|null $message optional

The error message to show in case the rule does not pass.

Returns

\Cake\Datasource\RuleInvoker

isUnique() public

isUnique(array $fields, mixed $message)

Returns a callable that can be used as a rule for checking the uniqueness of a value in the table.

Example:

$rules->add($rules->isUnique(['email'], 'The email should be unique'));

Parameters

string[] $fields

The list of fields to check for uniqueness.

string|array|null $message optional

The error message to show in case the rule does not pass. Can also be an array of options. When an array, the 'message' key can be used to provide a message.

Returns

\Cake\Datasource\RuleInvoker

validCount() public

validCount(string $field, int $count, string $operator, ?string $message)

Validates the count of associated records.

Parameters

string $field

The field to check the count on.

int $count optional

The expected count.

string $operator optional

The operator for the count comparison.

string|null $message optional

The error message to show in case the rule does not pass.

Returns

\Cake\Datasource\RuleInvoker

Property Detail

$_createRules protected

The list of rules to check during create operations

Type

\Cake\Datasource\RuleInvoker[]

$_deleteRules protected

The list of rules to check during delete operations

Type

\Cake\Datasource\RuleInvoker[]

$_options protected

List of options to pass to every callable rule

Type

array

$_rules protected

The list of rules to be checked on both create and update operations

Type

\Cake\Datasource\RuleInvoker[]

$_updateRules protected

The list of rules to check during update operations

Type

\Cake\Datasource\RuleInvoker[]

$_useI18n protected

Whether or not to use I18n functions for translating default error messages

Type

bool

© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.1/class-Cake.ORM.RulesChecker.html