Intereting Posts
Какова наилучшая практика отправки писем из PHP-скрипта? Получение всех $ _POST из нескольких значений выбора Как POST формировать данные из таблицы в PHP Когда фильтровать / дезинфицировать данные: перед вставкой базы данных или перед отображением? Переменное количество опций для компонента symfony / console bootstrap twitter datepicker + modal – календарь на родительском экране вместо модального экрана ImageMagick не хватает делегатов декодирования Каков наилучший способ сохранить переменные конфигурации в веб-приложении PHP? Как использовать Elastic Search поверх ранее существующей базы данных SQL? php создание zips без пути к файлам внутри zip Прочитайте каждую строку файла txt новому элементу массива Невозможно обработать исключение SQL с try-catch PHPExcel: ошибка «Невозможно прочитать файл» Преобразование Excel в PDF (.xlsx в .pdf) Является ли предотвращение XSS и SQL Injection так же просто, как это делает PHP regex – действительный номер плавающей позиции

Каков самый простой способ отображения ошибок проверки для hasMany-ассоциаций в CakePHP 2.x?

Каков самый простой способ отображения ошибок проверки для hasMany-ассоциаций с использованием Model :: saveAssociated () в CakePHP 2.x?

Вот пример из кулинарной книги CakePHP. ( http://book.cakephp.org/2.0/ru/models/saving-your-data.html#saving-related-model-data-hasone-hasmany-belongsto )

echo $this->Form->create('Company', array('action' => 'add')); echo $this->Form->input('Company.name', array('label' => 'Company name')); echo $this->Form->input('Company.description'); echo $this->Form->input('Company.location'); echo $this->Form->input('Account.0.name', array('label' => 'Account name')); echo $this->Form->input('Account.0.username'); echo $this->Form->input('Account.0.email'); echo $this->Form->end('Add'); 

Когда проверка, например, для параметра Account.0.email не выполняется, поле формы не выглядит автоматически недействительным. Хотя ошибка указана в $ this-> Company-> Account-> validationErrors.

Есть ли способ автоматически аннулировать соответствующее поле и отображать соответствующую ошибку проверки?

Related of "Каков самый простой способ отображения ошибок проверки для hasMany-ассоциаций в CakePHP 2.x?"

Он не на 100% автоматизирован, но есть вещи, которые вы можете собрать вместе, которые предоставляет CakePHP.

Прежде всего, я предполагаю, что вы используете последнюю версию 2.4

Решение, которое я предоставляю, состоит из двух частей:

a) вы проверяете данные на уровне контроллера

b) вы определяете сообщение об ошибке в FormHelper на уровне просмотра.

Для части а)

вы можете ссылаться на эту ссылку http://book.cakephp.org/2.0/en/models/data-validation/validating-data-from-the-controller.html#validating-data-from-the-controller

Основываясь на этой ссылке, я предлагаю два способа.

1) вы можете индивидуально проверить данные каждой модели.

Пример,

 if ($this->Company->validates(array('fieldList' => array('name', 'location')))) { // valid } else { // invalid } 

и затем вы делаете

 if ($this->Account->validates(array('fieldList' => array('email')))) { // valid } else { // invalid } 

Поскольку вы используете hasMany, поэтому есть вероятность, что вам может понадобиться проверить каждый отдельный набор данных учетной записи отдельно.

Поэтому вы, скорее всего, будете использовать цикл, так что вы можете использовать, и я цитирую,

если вы проверяете в цикле и хотите, чтобы каждый набор ошибок по отдельности не использовал invalidFields (). Вместо этого используйте validates () и получите доступ к свойству model validationErrors.

2) второй способ – использовать это

 if ($this->Company->saveAll($this->request->data, array('validate' => 'only'))) { // validates } else { // does not validate } 

Вы можете найти это в нижней части ссылки, которую я дал.

Теперь, как и для части b) отображения ошибок в FormHelper.

Вы можете прочитать http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#FormHelper::error