
Горизонтальная форма
Подключаете в виде, где форма ваша
use yii\bootstrap\ActiveForm;
Это круче, чем просто yii\widgets\ActiveForm, потому что дополняет её некоторыми полезными свойствами (такими как часто необходимый 'layout'). Например, можно сделать форму горизонтальной. Покажем пример
<?php $form = ActiveForm::begin([ 'layout'=>'horizontal', 'options' => ['class' => 'signup-form form-register1'], 'fieldConfig' => [ 'template' => "{label}\n{beginWrapper}\n{input}\n{hint}\n{error}\n{endWrapper}", 'horizontalCssClasses' => [ 'label' => 'col-sm-4', 'offset' => 'col-sm-offset-4', 'wrapper' => 'col-sm-8', 'error' => '', 'hint' => '', ], ], ]); ?> ...
Здесь мы выводим лейблы справа от полей, назовём это горизонтальной формой. И дальше свойство 'fieldConfig' настроит шаблон (что и в каком порядке у полей выводить, какие отступы делать).
Возможность загрузки изображений в форме
Не забудьте в массиве options указать 'enctype' => 'multipart/form-data'
$form = ActiveForm::begin(['id' => 'blog-form', 'options' => ['enctype' => 'multipart/form-data']]);
Настройка отдельного поля
Можно прописать шаблон, применительно к отдельному полю, а не ко всем полям формы. Подсказку hint(). Подвесить к полю специфичный виджет, например, редактор Imperavi
<?= $form->field($model, 'text', ['template' => "{label}\n{hint}\n{input}\n{error}"])->hint('подсказка для поля text')->widget(Widget::classname(), [ 'settings' => [ 'lang' => 'ru', 'removeWithoutAttr' => [], 'minHeight' => 300, 'pastePlainText' => true, 'buttonSource' => true, 'replaceDivs' => false, 'plugins' => [ 'clips', 'fullscreen', 'fontfamily', 'fontsize', 'fontcolor', 'video', 'table' ], 'imageUpload' => Url::to(['/blog/image-upload']), 'imageManagerJson' => Url::to(['/blog/images-get']), 'fileManagerJson' => Url::to(['/blog/files-get']), 'fileUpload' => Url::to(['/blog/file-upload']) ] ]);?>
Показ и непоказ названия поля (label). Плейсхолдеры (placeholder)
А вот в этом примере отключаю показ лейбла у полей, кроме поля 'message'. Задаю placeholder для полей типа инпут. Таким образом название поля переехало в само поле. Для поля message принудительно ставлю показ названия лейбла 'Ваши пожелания'
<?php $form = ActiveForm::begin([ 'id' => 'contact-form', 'options' => ['class'=>'form2 form-register1'], 'fieldConfig' => ['template' => "{label}\n{beginWrapper}\n{input}\n{hint}\n{error}\n{endWrapper}"] ]); ?> <?= $form->field($model, 'name', ['enableLabel' => false])->textInput(array('placeholder' => 'Ваше имя', 'class'=>'form-control text-center')); ?> <?= $form->field($model, 'email', ['enableLabel' => false])->textInput(array('placeholder' => 'Ваше email', 'class'=>'form-control text-center')); ?> <?= $form->field($model, 'phone', ['enableLabel' => false])->textInput(array('placeholder' => 'Номер Вашего телефона', 'class'=>'form-control text-center')); ?> <?= $form->field($model, 'message', [ 'template' => '{label}{input}{hint}{error}' ])->textArea(['rows' => 6, 'enableLabel' => true])->label('Ваши пожелания'); ?> <div class="form-group"> <?= Html::submitButton('<img src="/images/send.png" />', ['class' => 'form2 button_zvon uppercase', 'name' => 'contact-button']) ?> </div> <?php ActiveForm::end(); ?>
5 марта 2016, Программирование, веб-кодинг / Метки: форма placeholder activeform

