/** * Перед сохранением документа выставляем * ему необходимую позицию, инкрементируя последнюю * позицию из текущей директории * @param bool $insert * @return bool */ public function beforeSave($insert) { if (parent::beforeSave($insert)) { if ($this->isNewRecord && !$this->position) { $model = self::find()->select(['position'])->where(['parent_id' => $this->parent_id])->orderBy(['position' => SORT_DESC])->one(); $this->position = $model && $model->position ? $model->position + 1 : 1; } // При смене шаблона удаляем значения полей от старого шаблона if (!$this->isNewRecord && $this->getOldAttribute('template_id') != $this->template_id) { ValueNumeric::deleteAll(['document_id' => $this->id]); ValueString::deleteAll(['document_id' => $this->id]); ValueText::deleteAll(['document_id' => $this->id]); ValueDate::deleteAll(['document_id' => $this->id]); } return true; } return false; }