2015-12-28 2 views
3

Как отображать кириллицу по имени ActiveForm Yii2?Как отображать кириллицу по имени ActiveForm Yii2?

Если i weite «Имя», я получаю ошибку в модели.

нужны написать имя поля ActiveForm - "Имя", но не "имя".

<?php $form = ActiveForm::begin(); ?> 

    <?= $form->field($model, 'name') ?> //NEED <?= $form->field($model, 'Имя') ?> 

    <?= $form->field($model, 'email') ?> 


    <div class="form-group"> 
     <?= Html::submitButton('Отправить', ['class' => 'btn btn-primary']) ?> 
    </div> 
<?php ActiveForm::end(); ?> 

class EntryForm extends Model 
{ 
    public $name; 
    public $email; 

    public function rules() 
    { 
     return [ 
      [['name', 'email'], 'required'], 
      ['name', 'match', 'pattern' => '/^[a-z]\w*$/i'], 
      ['name', 'string', 'length' => [3, 15]], 
      ['email', 'email'], 
      ['email', 'string', 'length' => [4, 15]], 
     ]; 
    } 
} 
+0

Вы получаете сообщение об ошибке, когда используете Имя? – Clay

+0

Да. Я получаю ошибку в модели: class EntryForm extends Model '{ public $ name; public $ email; правила общественные функции() { возвращение [ [[ 'имя', 'электронная почта'], 'требуется'], [ 'имя', 'матч', 'шаблон' => «/^[AZ] \ w * $/i '], [' name ',' string ',' length '=> [3, 15]], [' email ',' email '], [' email ',' string ',' length '=> [4, 15]], ]; } } ' –

+0

отредактируйте ваше сообщение с кодом ... – Clay

ответ

2

'name' здесь:

<?= $form->field($model, 'name') ?> 

представляет английское название атрибута модели и не должны быть изменены. Изменение его на другой язык означает, что вам также необходимо соответствующим образом изменить столбец таблицы базы данных, и это считается ПОВЫШЕННОЙ ПРАКТИКОЙ. Подумайте о других разработчиках (особенно международных, которые могут поддерживать ваш код в будущем).

Менее плохая вариация может быть: imya, но это также ПЛОХАЯ ПРАКТИКА. Не используйте это.

Если вы wan't настроить отображаемую метку, добавить перевод в attributeLabels():

public function attributeLabels() 
{ 
    return [ 
     'name' => 'Имя', // or Yii:t(...) in case of multilanguage site 
    ]; 
} 
2

Хорошо работал!

<?= $form->field($model, 'name')->label('Ваше имя'); ?> 
+0

Да, вы можете использовать его в качестве альтернативы, если специальная форма. Забыл упомянуть об этом. Определить метку в 'attributeLabels' большую часть времени достаточно, особенно для бэкэнд. – arogachev

Смежные вопросы