Yii2. Метки полей формы
По умолчанию, метки полей формы автоматически генерируются из названия поля. Генерация выполняется методом generateAttributeLabel()
класса yii\base\Model
. Он преобразует первую букву каждого слова в верхний регистр, если имена переменных состоят из нескольких слов. Например, username
станет Username
, а firstName
станет First Name
.
Если такой вариант не устраивает, нужно переопределить метод yii\base\Model::attributeLabels()
:
namespace app\models; use yii\base\Model; class FeedbackForm extends Model { public $name; public $email; public $body; public function attributeLabels() { return [ 'name' => 'Ваше имя', 'email' => 'Адрес почты', 'body' => 'Ваше сообщение', ]; } }
Теперь при создании формы в шаблоне, метки задавать не нужно:
<h1><?= Html::encode($this->title) ?></h1> <?php $form = ActiveForm::begin(['id' => 'feedback-form']); ?> <?= $form->field($model, 'name')->textInput()->label('Ваше имя'); ?> <?= $form->field($model, 'email')->input('email')->label('Адрес почты'); ?> <?= $form->field($model, 'body')->textarea(['rows' => 5])->label('Ваше сообщение'); ?> <?= Html::submitButton('Отправить', ['class' => 'btn btn-primary']); ?> <?php ActiveForm::end(); ?>
<h1><?= Html::encode($this->title) ?></h1> <?php $form = ActiveForm::begin(['id' => 'feedback-form']); ?> <?= $form->field($model, 'name')->textInput(); ?> <?= $form->field($model, 'email')->input('email'); ?> <?= $form->field($model, 'body')->textarea(['rows' => 5]); ?> <?= Html::submitButton('Отправить', ['class' => 'btn btn-primary']); ?> <?php ActiveForm::end(); ?>
Интернационализация
namespace app\models; use yii\base\Model; class FeedbackForm extends Model { public $name; public $email; public $body; public function attributeLabels() { return [ 'name' => \Yii::t('app', 'Your name'), 'email' => \Yii::t('app', 'Your email'), 'body' => \Yii::t('app', 'Your message'), ]; } }
<?php /* * Файл config/web.php */ $config = [ 'id' => 'basic', 'basePath' => dirname(__DIR__), // язык перевода — русский 'language' => 'ru-RU', 'components' => [ /* ... */ 'i18n' => [ 'translations' => [ 'app*' => [ 'class' => 'yii\i18n\PhpMessageSource', // все переводы будут в файле messages/ru_RU/app.php 'fileMap' => [ 'app' => 'app.php', ], ], ], ], ], /* ... */ ];
<?php /* * Файл messages/ru_RU/app.php */ return [ 'Your name' => 'Ваше имя', 'Your email' => 'Ваш адрес почты', 'Your message' => 'Ваше сообщение', 'Submit' => 'Отправить', ];
<h1><?= Html::encode($this->title) ?></h1> <?php $form = ActiveForm::begin(['id' => 'feedback-form']); ?> <?= $form->field($model, 'name')->textInput(); ?> <?= $form->field($model, 'email')->input('email'); ?> <?= $form->field($model, 'body')->textarea(['rows' => 5]); ?> <?= Html::submitButton(\Yii::t('app', 'Submit'), ['class' => 'btn btn-primary']);?> <?php ActiveForm::end(); ?>
Поиск: PHP • Web-разработка • Yii2 • Форма • Фреймворк • Интернационализация • ru-RU • Label • Метка