У меня есть форма, которая вызывает две отдельные модели. Моя проверка правильной работы в том, что неверно введенные данные не проходят проверку; однако сообщения об ошибках отображаются только в данных модели RELATED. Вот отрывок из моей формы с обеими моделями:Сообщения об ошибках, не работающие на одной модели, когда проверка не завершена
echo $this->Form->input('Location.exchange', array('size'=>'3', 'error' => array('class' => 'error')));
echo $this->Form->input('Location.sln', array('size'=>'4', 'error' => array('class' => 'error')));
echo '<br />';
echo $this->Form->input('unit_website', array('size'=>'65', 'label'=>'Your unit\'s website', 'error' => array('class' => 'error')));
echo '<br />';
echo $this->Form->input('specials', array('size'=>'65', 'label'=>'Your website\'s Specials page', 'error' => array('class' => 'error')));
echo '<br />';
Сообщение об ошибках будет отображаться всякий раз, когда происходит сбой проверки на месте, но не другая (который Unit), который является ироническим, так как я нахожусь в UnitsController , Вот код контроллера:
function edit($id) {
$this->set('title', 'Edit your property');
$this->Unit->id = $id;
if (empty($this->request->data)) {
$this->request->data = $this->Unit->read();
} else {
if ($this->Unit->saveAll($this->request->data)) {
$this->Session->setFlash('Your property has been updated.', 'success');
} else {
Set::merge($this->Unit->read(), $this->request->data);
}
}
}
и вот фрагмент из массивов проверки как из моей Location модели и моей модели Unit: (от модели Unit):
public $validate=array(
'type'=>array(
'rule'=>'notEmpty',
'message'=>'You must choose what type of property this is.'
),
'unitnum'=>array(
'rule'=>array('custom', '/^[a-z0-9 -\'.\/&]*$/i'),
'message'=>'Must be the name or number of your unit.'
)
);
(от модели Местоположение):
public $validate = array(
'area_code'=> array(
'ac1'=> array(
'rule'=>'numeric',
'message'=>'Must be a number'
),
'ac2'=>array(
'rule'=>array('comparison', '>=',100),
'message'=>'You must enter a valid area code'
)
);
Хех. Никогда не думал заглянуть в фактическое определение функции read(). Хорошо, теперь я вижу это; моя проблема в том, что без метода merge() я не сохраняю весь свой массив данных, чтобы пользователь мог исправить ошибки и правильно обновить запись. Любые советы по обходному пути к этому? – huzzah
Все, что отправлено из формы, должно быть доступно в форме снова, когда проверка не удалась, если вы не измените содержание '$ this-> request-> data'. В любом случае, я думаю, использование 'find()' вместо 'read()' должно сохранять ошибки проверки. – nIcO
Хм. Я продолжал использовать функцию merge(), потому что на самом деле я потерял все данные массива из моделей, которые не использовались в форме, как показано на http://stackoverflow.com/questions/9690300/cakephp- это-данные проигрывают-а-много в своем-массиве данных-после-формы подать. Раньше это вызывало проблемы, но с тех пор я изменил свои страницы редактирования, так что это уже не проблема. Поэтому я смогу удалить эту строку в конце концов. Так что спасибо тебе! – huzzah