web-dev-qa-db-fra.com

Les options des champs Yii2 ActiveForm ne fonctionnent pas

Selon le tutoriel officiel de Yii2. J'ai créé une vue pour le formulaire de saisie:

    <?php
    use yii\helpers\Html;
    use yii\widgets\ActiveForm;
    ?>
    <?php $form = ActiveForm::begin(); ?>
<!-- GET Attention for the next Line -->
    <?= $form->field($model, 'name')->label('Your Name'); ?>
    <?= $form->field($model, 'email'); ?>
    <div class="form-group">
      <?=  Html::submitButton('Send!', ['class' => 'btn btn-primary']); ?>
    </div>    
    <?php ActiveForm::end(); ?>

À ce stade, tout va bien. Cependant, lorsque j'essaie d'utiliser le paramètre options de la méthode field comme suit:

<?= $form->field($model, 'name', ['style' => 'color:red'])->label('Your Name'); ?>

J'ai l'erreur

Propriété inconnue - yii\base\UnknownPropertyException

Définition de la propriété inconnue: yii\widgets\ActiveField :: style

La documentation officielle de l'api indique que la méthode d'ActiveForm utilise un troisième paramètre appelé options

Quelqu'un pourrait-il m'expliquer pourquoi cette erreur s'est produite?! 

10
SaidbakR

Essayer

<?= $form->field($model, 'name')->textInput(['style' => 'color:red'])->label('Your Name'); ?>

C'est un peu difficile à expliquer, quand vous faites $form->field($model, 'name') sans spécifier le type de champ, vous demandez en réalité un textInput. Mais cela ne signifie pas que vous devriez demander à ->field( de prendre les paramètres de la même manière que le fait ->textInput(. Si vous devez définir des paramètres spéciaux pour le champ, vous devez utiliser la fonction ->textInput(['style' => 'color:red']) explicite.

13
Mihai P.

Essayez ce code:

<?= $form->field($model, 'name', [ 'options' => [ 'style' => 'color: red']])->label('Your Name'); ?>

Vous avez cette erreur

Unknown Property – yii\base\UnknownPropertyException

Setting unknown property: yii\widgets\ActiveField::style

parce qu'il n'y a pas un tel style de propriété. Vous devez utiliser 'options' et passer 'style' comme sous-tableau

5
tsanchev

Cette manière est pour les options d'especify sur tout le "champ" (qui inclut "l'étiquette" et "l'entrée") mais 'style' => 'couleur: rouge' n'affecte que l'étiquette de cette façon, je l'utilise pour especify options au lieu de couleur:

<?= $form->field($model, 'name', [ 'options' => [ 'class' => 'col-xs-8']])->label('Your Name'); ?>

Si vous souhaitez spécifier des options pour l'une d'entre elles (étiquette ou entrée), vous pouvez le faire séparément, comme ceci:

<?= $form->field($model, 'name')->textInput(['style' => 'color:red'])->label('Your Name',['style'=>'color:blue']); ?>

Yii est si flexible, c'est ce que j'aime bien.

0
Jose Manuel Kun