@kat-vetal

Исчезает класс в ActiveForm?

Добрый день. Есть форма и есть поле
<?= $form->field($model->main, 'alias')->textInput(['maxlength' => true]) ?>

она выводит
<div class="form-group field-navigations-alias required">
<label class="control-label col-md-3" for="navigations-alias">Псевдоним</label><div class="col-md-9"><input type="text" id="navigations-alias" name="Navigations[alias]">

<span class="help-block"></span></div>
</div>

Но если задать options вот так

<?= $form->field($model->main, 'alias', ['options' => ['style' => 'display:none']])->textInput(['maxlength' => true]) ?>

то выводит
<div class="field-navigations-alias required" style="display:none">
<label class="control-label" for="navigations-alias">Псевдоним</label>
<input type="text" id="navigations-alias" class="form-control" name="Navigations[alias]" maxlength="255" aria-required="true">

<div class="help-block"></div>
</div>


То-есть при добавлении options исчезает класс form-group. В чем может быть проблема
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
Если Вы взгляните на исходники класса ActiveField (который собственно и используется при вызове метода $form->field()) то увидите что в свойстве html-опций по умолчанию прописано
public $options = ['class' => 'form-group'];
соответственно когда Вы делаете вызов метода field() в стиле
$form->field($model->main, 'alias', ['options' => ['style' => 'display:none']])

html-опции прописанные по умолчанию заменяются переданными Вами значения.
Решить эту проблему можно двумя вариантами:
1. В необходимых полях принудительно задать css-класс, например
$form->field($model->main, 'alias', ['options' => ['class' => 'form-group', 'style' => 'display:none']])

2. Для все полей формы принудительно задать css-класс , например:
$form = ActiveForm::begin([
    'fieldConfig' => [
	    'options'=>[
		    'class' => 'form-group'
        ]
    ]
]);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
berezuev
@berezuev
#define TRUE FALSE
<?= $form->field($model->main, 'alias'])->textInput(['maxlength' => true, 'style' => 'display:none']) ?>

Так попробуйте
Ответ написан
Ваш ответ на вопрос

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

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