web-dev-qa-db-ja.com

ActiveFieldのラベルテキストを変更する方法は?

新しいYii2基本プロジェクトを作成しました。掘り下げたいと思います。

ログインページに[ユーザー名]フィールドがあります。 enter image description here

ラベル「ユーザー名」をカスタムに変更したい「私の素晴らしいラベル」。私はマニュアルを読みました: http://www.yiiframework.com/doc-2.0/yii-widgets-activefield.html

少し調べたところ、次の結果が得られました。 enter image description here

テンプレートのみを変更し、レイアウトを変更しました:

<?= $form->field($model, 'username', [
    "template" => "<label> My superb label </label>\n{input}\n{hint}\n{error}"
])?>

ラベルのテキストを正しい方法で変更する方法は?ベストプラクティスとは何ですか?

23
Vadim

さて、LoginForm.phpのattributeLabelsをオーバーライドするだけです:

/**
 * Returns the attribute labels.
 *
 * See Model class for more details
 *  
 * @return array attribute labels (name => label).
 */
public function attributeLabels()
{
    return [
        'username' => 'Логин',
        'password' => 'Пароль',
    ];
}
18
Vadim
<?= $form->field($model, 'username')->textInput()->label('My superb label') ?>

http://www.yiiframework.com/doc-2.0/yii-bootstrap-activefield.html#label()-detail

41
Mihai P.

別のクールな方法があります。

<?= $form->field($model, 'username')->textInput(['class'=>'field-class'])->label('Your Label',['class'=>'label-class']) ?>
19
Jake Conner

このような関数をモデルに追加することもできます。

public function attributeLabels()
{
    return [
        'username' => 'My Login',
        'password' => 'My Pasword',
        'rememberMe' => 'Remember Me, please',
    ];
}
2
Wiktor