2015-05-06 19 views
5

Tôi đang tìm một giải pháp đơn giản cho trạng thái "đã chọn" cho kiểm soát hộp kiểm Yii2 ActiveForm và tôi không thể tìm thấy giải pháp cách đặt. Tôi không thể tìm thấy bất kỳ ví dụ nào trong tài liệu.Cách đặt hộp kiểm ActiveForm của Yii2 ở trạng thái đã chọn?

tôi đã cố gắng để thao tác mã vẽ

<?= $form->field($model, 'name')->checkbox()->label('Hi'); ?> 

Nhưng có vẻ như tôi cần phải sửa đổi ActiveForm riêng của mình. Làm cách nào để chọn hộp kiểm theo mặc định?

Trả lời

3

Ok, tôi đã debbuged một thời gian và tìm ra giải pháp, nó nằm trong ruột của BaseHtml.php tại dòng 1359 trong activeCheckbox() chức năng

$checked = "$value" === "{$options['value']}"; 

Nó kiểm tra các giá trị mặc định của mô hình biến:

class SomeForm extends Model 
{ 
    public $name = true; 

Và giá trị như nhau (với cùng một loại) phải được giao cho tùy chọn 'giá trị' trong

<?= $form->field($model, 'name')->checkbox(['value' => true])->label('Hi'); ?> 

Tôi sẽ nói rằng nó quá phức tạp như đối với tính năng tầm thường như vậy.

0

Xem, trong mã của tôi status là 0 hoặc 1.

Vì vậy, đối với hộp kiểm kiểm tra., Tôi tuyên bố <?php $model->status = 1; ?>

<?php $model->status = 1; ?> 
<?= $form->field($model, 'status')->checkbox()->label('Hi'); ?> 

Ví dụ, nếu bạn đang gặp 2 giá trị cho tên hộp kiểm tức PHP hoặc Java. Sau đó, khai báo nó như <?php $model->name = 'Java'; ?> để nhận Java như checked

//Your Code 

<?php $model->name = 'Java'; ?> 
<?= $form->field($model, 'name')->checkbox()->label('Hi'); ?> 
+1

Hãy cho tôi biết lý do giảm giá. Một trong những người đã downvote, bạn đã thử trong hệ thống của bạn ?. Một số người chỉ đơn giản là đến SO để downvote. Nếu bạn nghĩ, câu trả lời này không hữu ích, hãy đưa ra lý do/gợi ý. ** Không đơn giản là Downvote ** –

1

Nếu tôi muốn có một hộp kiểm kiểm tra trên tạo tôi làm điều gì đó như thế này trong một cái nhìn:

if ($model->isNewRecord) { 
    $model->status = TRUE; 
} 

Tôi biết nó không phải là một thanh lịch giải pháp, nhưng nó đang hoạt động.

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