По умолчанию, метки полей формы автоматически генерируются из названия поля. Генерация выполняется методом generateAttributeLabel() класса yii\base\Model. Он преобразует первую букву каждого слова в верхний регистр, если имена переменных состоят из нескольких слов. Например, username станет Username, а firstName станет First Name.
Если такой вариант не устраивает, нужно переопределить метод yii\base\Model::attributeLabels():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | namespace app\models; use yii\base\Model; class FeedbackForm extends Model { public $name ; public $email ; public $body ; public function attributeLabels() { return [ 'name' => 'Ваше имя' , 'email' => 'Адрес почты' , 'body' => 'Ваше сообщение' , ]; } } |
Теперь при создании формы в шаблоне, метки задавать не нужно:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <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 (); ?> |
Интернационализация
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | 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 (); ?> |