По умолчанию, метки полей формы автоматически генерируются из названия поля. Генерация выполняется методом 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(); ?>