2016-01-13 6 views
9

ho qualche codice qui sotto:Come aggiungere la classe al gruppo di moduli div di ActiveField in YII2?

<?= 
    $form->field($model, 'phone_no')->textInput(
    [ 
     'placeholder' => 
     '(Conditionally validated based on checkbox above, groovy!)' 
    ] 
) 
?> 

che si traduce in HTML:

<div class="form-group field-contactform-phone_no"> 
    <label class="control-label">Phone No 
    <input type="text" aria-describedby="hint-contactform-phone_no" placeholder="(Conditionally validated based on checkbox above, groovy!)" name="ContactForm[phone_no]" id="contactform-phone_no" class=""></label> 
    <small class="error-box"></small> 
    <p class="help-text" id="hint-contactform-phone_no"></p> 
</div> 

mia domanda è:

Come posso aggiungere una classe 'invisibile' al div esterno (contenente class = form-group attualmente)?

Grazie per l'aiuto

risposta

15

Si può fare in questo modo per il singolo campo:

<?= $form->field($model, 'phone_no', ['options' => ['class' => 'form-group invisible']) 
    ->textInput(['placeholder' => '(Conditionally validated based on checkbox above, groovy!)']) ?> 

A livello globale (per tutti i campi di modulo) è possibile in questo modo:

<?php $form = ActiveForm::begin([ 
    'fieldConfig' => ['options' => ['class' => 'form-group invisible']], 
]); ?> 

Puoi costruire anche fieldConfig condizionatamente:

<?php $form = ActiveForm::begin([ 
    'fieldConfig' => function ($model, $attribute) { 
     if (...) { 
      return ['options' => ['class' => 'form-group invisible']], 
     } 
    }, 
]); ?> 

Nota che devi includere anche la classe form-group, perché non è unita a quella personalizzata.

documentazione ufficiale:

+0

Grazie che funziona piuttosto bene! Ora come renderlo fadeIn con jQuery (cioè rimuovere l'elemento 'nascondi' ma rendere l'elemento fadeIn). Lo cercherò, grazie per l'aiuto arogachev – gvanto

6

Definire il layout del modello per tutti gli elementi di input.

<?php 
       $form = ActiveForm::begin([ 
          'id' => 'purchase-sms-temp-form', 
          'layout' => 'horizontal', 
          'fieldConfig' => [ 
           'template' => " <div class=\"form-group form-md-line-input\">{label}\n{beginWrapper}\n{input}<div class=\"form-control-focus\"> </div>\n{error}\n</div>{endWrapper}", 
           'horizontalCssClasses' => [ 
            'label' => 'col-md-2 control-label', 
            'offset' => 'col-sm-offset-4', 
            'wrapper' => 'col-sm-10', 
            'error' => 'has-error', 
            'hint' => 'help-block', 
           ], 
          ], 
       ]); 
       ?> 

       <div class="form-body"> 
        <?= $form->field($model, 'mobile') ?> 
        <?= $form->field($model, 'volume') ?> 
        <?= $form->field($model, 'hospital_id') ?> 
        <?= $form->field($model, 'created_date') ?> 
        <?= $form->field($model, 'complete') ?> 
        <?= $form->field($model, 'modified_date') ?> 

       </div> 

Per un campo personalizzato è possibile definire una classe

$form->field($model, 'phone_no', [ 
      'options' => [ 
      'class' => 'form-group invisible' 
      ])->textInput([ 
       'placeholder' => '(Conditionally validated based on checkbox above, groovy!)']) ?> 
+0

Perché definire un modello per aggiungere semplicemente una classe al contenitore del campo? Il secondo approccio è già presente nella mia risposta. – arogachev

+0

Manca una parentesi di chiusura nel campo personalizzato, ['options' => ['class' => 'form-group invisible']] –

Problemi correlati