2016-01-13 21 views
9

Tôi có một số mã dưới đây:Cách thêm lớp vào div nhóm của ActiveField trong YII2?

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

Những kết quả dưới dạng 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> 

Câu hỏi của tôi là:

Làm thế nào tôi có thể thêm một lớp 'vô hình' cho div bên ngoài (có chứa class = form-group hiện tại)?

Nhờ sự giúp đỡ

Trả lời

15

Bạn có thể làm điều đó như thế này cho lĩnh vực duy nhất:

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

Toàn cầu (cho tất cả các trường trong form) nó có thể như thế này:

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

Bạn có thể cũng xây dựng fieldConfig có điều kiện:

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

Lưu ý rằng bạn phải bao gồm cả lớp form-group vì nó không được hợp nhất với lớp tùy chỉnh của bạn.

tài liệu chính thức:

+0

Nhờ đó hoạt động khá tốt! Bây giờ làm thế nào để làm cho nó fadeIn với jQuery (tức là loại bỏ 'ẩn' yếu tố nhưng làm cho phần tử fadeIn). Sẽ tìm kiếm nó, nhờ sự giúp đỡ arogachev – gvanto

6

Xác định layout template cho tất cả các yếu tố đầu vào.

<?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> 

Đối với một lĩnh vực tùy chỉnh, bạn có thể định nghĩa một lớp bằng

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

Tại sao xác định mẫu để chỉ thêm lớp vào vùng chứa? Cách tiếp cận thứ hai được bao gồm trong câu trả lời của tôi rồi. – arogachev

+0

Thiếu một khung đóng trong trường tùy chỉnh, ['tùy chọn' => ['lớp' => 'nhóm dạng ẩn']] –

Các vấn đề liên quan