Проверка CakePHP на => 'создать', на => 'обновить' - PullRequest
3 голосов
/ 21 марта 2012

Я надеюсь, что вы, эксперты CakePHP, сможете ответить на этот вопрос о Cake 2.1 и проверке данных в модели.

Cake дает вам ключ "on" для использования в массиве validate. Я понимаю, что по этому поводу говорят доктора, но мой вопрос в чем смысл этих двух пунктов.

Допустим, у меня есть правило проверки, когда создается запись. Проверка пройдена, и запись создана.

Затем пользователь переходит и редактирует эту запись и заменяет ее чем-то, что больше не проходит эту конкретную проверку. Но так как у меня установлен набор проверки для запуска только при создании, проверка проходит, и запись обновляется с неверными данными. Мне кажется, что это применимо к любым правилам создания / обновления. Если пользователь хотел обойти проверку, просто создайте действительную запись, затем перейдите и отредактируйте ее, чтобы она стала недействительной.

Может кто-нибудь помочь мне понять, когда имеет смысл использовать его при обновлении и создании?

Ответы [ 3 ]

11 голосов
/ 21 марта 2012

Это наиболее полезно при соблюдении правила required.Вы должны установить определенные поля, которые минимально должны быть required 'on' => 'create'.Это приводит к сбою правила, если эти поля не существуют в наборе данных и запись не может быть создана, но позволяет обновлять существующие записи, не пропуская это поле каждый раз.

Например:

'email' => array(
    'required' => array(
        'on'         => 'create',
        'rule'       => 'notEmpty',
        'message'    => 'Enter your email address',
        'required'   => true,
        'last'       => true
    ),
    'notempty' => array(
        'rule'       => 'notEmpty',
        'message'    => 'Enter your email address',
        'allowEmpty' => false,
        'last'       => true
    ),
    'email' => array(
        'rule'       => 'email',
        'message'    => 'Not a valid email address',
        'last'       => true
    )
)
1 голос
/ 31 июля 2012

Я нашел это действительно полезным в сотрудничестве с фотографиями профиля. Вы должны загрузить его при создании (если это необходимо), но при обновлении я могу остаться пустым => обновление изображения не будет выполнено.

0 голосов
/ 21 марта 2012

'on' => null сделает работу

РЕДАКТИРОВАТЬ:

Хорошо, допустим, у вас есть модель профиля.

Если у вас есть поле «Дата рождения», вы, вероятно, будете использовать правило, которое будет применяться как для дополнения, так и для редакции.

Вы также можете добавить флажок delete_picture в своей форме, который пользователь должен выбрать, чтобы удалить свою фотографию профиля. При добавлении у вас нет изображения профиля, поэтому это поле релевантно только во время редактирования, и тогда вы должны использовать on => update.

Допустим, у вас также есть групповое поле, которое устанавливается при создании объекта, но оно никогда не должно изменяться. Затем вы должны использовать on => create.

...