TimestampBehavior::class, 'createdAtAttribute' => 'created_at', 'updatedAtAttribute' => 'updated_at', 'value' => new Expression('NOW()'), ], ]; } /** * {@inheritdoc} */ public function rules() { return [ [['created_at', 'updated_at'], 'safe'], [['title'], 'unique'], [['document_type'], 'integer'], [['template_file_name', 'title', 'document_type'], 'required'], [['template'], 'required', 'message'=>'Укажите путь к файлу'], [['template'], 'file', 'maxSize' => '100000'], [['template'], 'file', 'skipOnEmpty' => true, 'extensions' => 'docx'], [['title', 'template_file_name'], 'string', 'max' => 255], ]; } public function scenarios() { $scenarios = parent::scenarios(); $scenarios[static::SCENARIO_UPDATE_TITLE] = ['created_at', 'updated_at', 'title', 'template_file_name']; $scenarios[static::SCENARIO_UPDATE_FILE] = ['template']; return $scenarios; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'id' => 'ID', 'title' => 'Название', 'created_at' => 'Дата создания', 'updated_at' => 'Дата изменения', 'template_file_name' => 'Файл шаблона', 'document_type' => 'Тип документа', ]; } public function beforeDelete() { foreach ($this->templateDocumentFields as $templateDocumentField){ $templateDocumentField->delete(); } if (!empty($this->template_file_name)) { $template_path = Yii::getAlias('@templates') . '/' . $this->template_file_name; if(file_exists($template_path)) { unlink($template_path); } } return parent::beforeDelete(); } /** * @return ActiveQuery */ public function getDocuments() { return $this->hasMany(Document::className(), ['template_id' => 'id']); } /** * @return ActiveQuery */ public function getTemplateDocumentFields() { return $this->hasMany(TemplateDocumentField::className(), ['template_id' => 'id']); } public function getTitle() { return $this->title; } public function getFields() { return $this->hasMany(DocumentField::className(), ['id' => 'field_id']) ->via('templateDocumentFields'); } }