Несколько бизнес-правил для таблицы в Cakephp - PullRequest
0 голосов
/ 18 мая 2018

В таблицах у нас может быть много разных проверок, которые мы можем вызывать так, как мы хотим:

public function validationDefault(Validator $validator)
{
    $validator
        ->requirePresence('title', 'create')
        ->notEmpty('title');

    $validator
        ->allowEmpty('link')
        ->add('link', 'valid-url', ['rule' => 'url']);

    ...

    return $validator;
}

public function validationUpdate($validator)
{
    $validator
        ->add('title', 'notEmpty', [
            'rule' => 'notEmpty',
            'message' => __('You need to provide a title'),
        ])
        ->add('body', 'notEmpty', [
            'rule' => 'notEmpty',
            'message' => __('A body is required')
        ]);
    return $validator;
}

И тогда мы можем назвать это следующим образом:

$article = $articles->newEntity(
    $this->request->getData(),
    ['validate' => 'update']
);

Моя проблема в том,что я создаю собственную корзину покупок, и я хочу проверить, есть ли у пользователя продукты в ней, что соответствует бизнес-правилу, а не проверке данных.Но мне нужно называть это «вручную» (например, не с помощью действия save()), поскольку мне нужно проверять его только в некоторых местах, которые не изменяют пользовательские данные.А что касается бизнес-правил, единственный пример, приведенный в книге, - это просто поместить их в метод buildRules().

Итак, есть ли способ иметь несколько бизнес-правил, например, как выполняется проверка данных,и назвать это "от руки"?

1 Ответ

0 голосов
/ 18 мая 2018

Используйте функцию обратного вызова buildRules () и используйте вызываемые элементы или напишите свои собственные объекты правил:

...