@Teran123

Yii2 ActiveField как добавить новый {tag} в template?

Здравствуйте. Можно ли добавить свой {tag} в template без сильного геморроя?
Есть код, нужно добавить {icon}, а назначать его по field(...)->icon('clock'), например.
$form = ActiveForm::begin([
    'id' => 'login-form',
    'action' => '/login',
    'options' => ['class' => 'form-horizontal'],
    'fieldConfig' => [
        'template' => "<div class=\"col-lg-12\">
            <span class=\"fa fa-{icon} input-icon\"></span>
            {input}
        </div>\n<div class=\"col-lg-12\">{error}</div>",
    ],
]);
  • Вопрос задан
  • 250 просмотров
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Доброй ночи.
Что Вы имеете ввиду под "сильным геморроем"?
В классе ActiveField есть метод public function render()
public function render($content = null)
    {
        if ($content === null) {
            if (!isset($this->parts['{input}'])) {
                $this->textInput();
            }
            if (!isset($this->parts['{label}'])) {
                $this->label();
            }
            if (!isset($this->parts['{error}'])) {
                $this->error();
            }
            if (!isset($this->parts['{hint}'])) {
                $this->hint(null);
            }
            $content = strtr($this->template, $this->parts);
        } elseif (!is_string($content)) {
            $content = call_user_func($content, $this);
        }
        return $this->begin() . "\n" . $content . "\n" . $this->end();
    }

И есть ещё куча методов вроде public function input(), которые тоже генерируют разные теги.
Думаю, что если его переопределить, добавить то, что Вы хотите, то можно будет добавить свой tag.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы