короткая версияValidation проблемы с несколькими флажками (HABTM) на CakePHP форме
У меня есть некоторые HABTM флажков на форме. Валидация работает правильно (по крайней мере один флажок должен быть проверен для проверки, чтобы пройти), но деления сообщений CakePHP не генерируются, как должно быть.
Long Version
У меня есть, из которого позволяет пользователям заполнить свое имя и адрес электронной почты, а затем выбрать из списка брошюр (чекбоксы) они хотели бы получить.
форма выглядит следующим образом:
<?php
echo $this->Form->create('Request',array('action' => 'index'));
echo $this->Form->input('id');
echo $this->Form->input('name');
echo $this->Form->input('email');
echo $this->Form->input('Brochure',array(
'label' => __('Information Required:',true),
'type' => 'select',
'multiple' => 'checkbox',
'options' => $list,
'selected' => $this->Html->value('Brochure.Brochure'),
));
echo $this->Form->submit('Submit');
echo $this->Form->end();
?>
В мой контроллер, $list
устанавливается как например:
$this->Request->Brochure->find('list',array('fields'=>array('id','name')));
После прочтения 2-й ответ (отправленный user448164) в HABTM form validation in CakePHP на переполнение стека , Я поставил свою модель запроса следующим образом:
<?php
class Request extends AppModel {
var $name = 'Request';
function beforeValidate() {
foreach($this->hasAndBelongsToMany as $k=>$v) {
if(isset($this->data[$k][$k]))
{
$this->data[$this->alias][$k] = $this->data[$k][$k];
}
}
}
var $validate = array(
'name' => array(
'rule' => 'notEmpty',
'message' => 'Please enter your full name'
),
'email' => array(
'rule' => 'email',
'message' => 'Please enter a valid email address'
),
'Brochure' => array(
'rule' => array('multiple', array('min' => 1)),
'message' => 'Please select 1'
),
);
?>
Это действительно работает на 99%. Если ни один из флажков не установлен, проверка завершается неудачно, как и должно быть. Однако единственная проблема заключается в том, что Cake не устанавливает класс «error» на <div>
, и он не создает <div class="error-message">Please select 1</div>
, как и следовало ожидать.
Для имени и электронной почты нет проблем - создаются правильные разделители ошибок.
Для уточнения, валидация является, работающих на моих HABTM флажках. Единственная проблема заключается в том, что деления ошибок не генерируются.
Какая версия торта и как выглядит '$ this-> validationErrors'? – jeremyharris
@jeremyharris Я использую Cake 2.1.1, но у меня была эта проблема с Cake 1.3.x. '$ this-> validationErrors' имеет значение null, но' $ this-> Request-> validationErrors' дает мне массив, содержащий сообщение об ошибке «Выберите 1», которое я установил в модели. – Joseph
Да, но какой формат массива ошибок проверки? Вот как Cake определяет, должно ли поле показывать ошибку. Вам, вероятно, придется немного помассировать, что я получаю, что-то вроде ответа, заданного в вопросе, с которым вы связались. – jeremyharris