Задать вопрос
@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>",
    ],
]);
  • Вопрос задан
  • 261 просмотр
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Onskills
    PHP: базовый курс
    1 месяц
    Далее
  • teamcoding
    TC200PY Разработка PHP веб-приложений на Yii2. Шаблон приложения advanced
    3 месяца
    Далее
  • FructCode
    Yii2 Фреймворк
    2 месяца
    Далее
Решения вопроса 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.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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