protected function beforeValidate() { $detailError = false; $this->aModelDetail = array(); if (isset($_POST['FiInvoiceDetail']['id']) && is_array($_POST['FiInvoiceDetail']['id']) && count($_POST['FiInvoiceDetail']['id'])) { foreach ($_POST['FiInvoiceDetail']['id'] as $key => $pk) { $amount = isset($_POST['FiInvoiceDetail']['amount'][$key]) ? $_POST['FiInvoiceDetail']['amount'][$key] : 0; $mDetail = new FiInvoiceDetail('validate_detail'); $mDetail->id = $pk; $mDetail->amount = $amount; $mDetail->validate(); if (!empty($pk)) { $this->aModelDetail[] = $mDetail; } if ($mDetail->hasErrors()) { $detailError = true; } } } if (count($this->aModelDetail) < 1) { $this->addError('aModelDetail', 'Details can not be blank'); $this->aModelDetail = array(new FiInvoiceDetail()); } if ($detailError) { $this->addError('aModelDetail', 'Details error'); } return parent::beforeValidate(); }