Пользовательская проверка CakePHP 3: как сравнить новое значение со старым во время редактирования? - PullRequest
0 голосов
/ 04 июля 2018

У меня есть случай, когда я хочу разрешить пользователю увеличивать значение только во время редактирования. Для этого мне нужно сравнить новое значение, переданное в запросе, со старым значением из сущности, хранящейся в БД.

Пользовательская функция проверки получает два аргумента: $check, который является проверяемым значением, и массив $context, который содержит другие значения из отправленной формы.

Каков наилучший способ проверки версии так, как мне нужно в CakePHP 3? Возможно ли это с правилами валидации?

1 Ответ

0 голосов
/ 04 июля 2018

вы можете использовать Правила применения

Вы должны создать новое правило в вашем объекте Table

предположим, что поле, которое вы хотите проверить, является priority

Таким образом, в вашем правиле вы проверяете значение priority (которое только что было изменено) по сравнению с исходным значением, хранящимся в $entity->getOriginal('priority')

public function buildRules(RulesChecker $rules)
{

    // This rule is applied for update operations only
    $rules->addUpdate(function ($entity, $options) {
        if($entity->priority >= $entity->getOriginal('priority'))
            return true;
        else
            return false;
    }, 
    'CheckPriority', // The name of the rule
    [
        'errorField' => 'priority', // the field you want 
                                    // to append the error message
        'message' => 'You have to set a higher Priority' // the error message
    ]);

    return $rules;
}
...