Приложение, над которым я работаю (форма заказа), позволяет пользователю вводить несколько подзаписей в iframe. Эти субзаписи соединены с основной записью с помощью внешнего ключа.CakePHP: проверка позиции в iframe перед отправкой родительской формы
main_records line_items
----------- ----------
id int(11) PK etc. id int(11) PK etc.
main_record_id (FK)
Мне нужно приложение, чтобы проверить, существует ли хотя бы одна позиция внутри этого iframe перед отправкой формы. Я бы хотел использовать функциональные возможности $ validate в модели, но я не уверен, как действовать дальше. Вот что я пробовал в модели Main:
App::uses('AppModel', 'Model', 'LineItem');
public $hasMany = array(
'LineItem' => array(
'className' => 'LineItem',
'foreignKey' => 'main_record_id',
'dependent' => false
)
);
public $validate = array(
'main_record_id' = array(
'allowEmpty' => false,
'rule' => 'checkForLineItem',
'message' => 'You must enter at least one line item!'
)
);
//Check to make sure there is at least one line item before saving changes/submitting for approval
function checkForLineItem($id) {
$lines = $this->LineItem->find('all', array(
'fields' => array('LineItem.main_record_id'),
'conditions' => array('LineItem.main_record_id'=>$id, 'LineItem.deleted_record'=>0))
);
if(!empty($lines)) {
return true;
} else {
return false;
}
}
Я также отслеживаю, была ли эта позиция удалена. Если он есть, то он не добавляется к $ строкам.
Я знаю, что могу выполнить это в Контроллере, но, насколько я знаю, для этого потребуется форма для публикации, и пользователь потеряет любые изменения после обратной передачи (я еще не реализовал jQuery в этой форме) , Я на правильном пути, как это сделать? Какие изменения я должен внести, чтобы заставить это работать?