/** * Добавляем дополнительные валидаторы * в зависимости от типа записи */ public function beforeValidate() { switch ($this->type) { case 4: // Строка // Строка case 8: // Файл (выбор с сервера) $this->validators[] = Validator::createValidator('string', $this, 'value'); break; case 9: // Регулярное выражение $field = Field::findOne($this->field_id); if ($field) { $pattern = $field->param ? $field->param : '\\w'; $this->validators[] = Validator::createValidator('match', $this, 'value', ['pattern' => $pattern]); } break; } return true; }
/** * Добавление значения мультиполя */ public function actionField() { $document_id = Yii::$app->request->post('document_id'); $model = $document_id ? Document::findOne($document_id) : new Document(); $field_id = Yii::$app->request->post('field_id'); $field = Field::findOne($field_id); if (!$field) { return false; } $data_id = Yii::$app->request->post('data_id'); $data_id = 'new_multi_' . $data_id; // 0 перед id нового поля свидетельствует о добавлении мультизначения $data = ['value' => '', 'position' => '']; return $this->renderAjax('@vendor/lowbase/yii2-document/views/document/_field', ['model' => $model, 'field' => $field, 'field_id' => $field_id, 'data' => $data, 'data_id' => $data_id]); }
/** * Поиск модели (поле шаблона по ID) * @param integer $id - ID поля шаблона * @return Field the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Field::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException(Yii::t('document', 'Запрашиваемая страница не найдена')); } }