2015-05-06 14 views
5

Szukam prostego rozwiązania dla "sprawdzonego" stanu kontrolki checkboxa Yii2 ActiveForm i nie mogę znaleźć rozwiązania, jak to ustawić. Nie mogę znaleźć żadnych przykładów w dokumentacji.Jak ustawić pole wyboru ActiveForm Yii2 w zaznaczonym stanie?

Próbowałem manipulować kod renderowania

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

Ale wydaje się, że trzeba zmodyfikować sam ActiveForm. Jak sprawić, by pole wyboru było zaznaczone domyślnie?

Odpowiedz

3

Ok, mam debbuged chwilę i znalazł rozwiązanie, leży w jelitach BaseHtml.php na linii 1359 w activeCheckbox funkcja

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

Sprawdza dla wartości domyślnej modelu() zmienna:

class SomeForm extends Model 
{ 
    public $name = true; 

I ta sama wartość (tego samego typu) muszą być przypisane do opcji „wartość” w

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

Powiedziałbym, że jest zbyt skomplikowany jak na tak banalną funkcję.

0

See, w moim kodu status jest 0 lub 1.

Tak więc, na sprawdzonej wyboru., I ogłosił <?php $model->status = 1; ?>

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

Na przykład, jeśli masz 2 wartości dla nazwy pole IE PHP lub Java. Następnie zadeklarować ją jako <?php $model->name = 'Java'; ?> uzyskania Java jako checked

//Your Code 

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

Poinformuj mnie o przyczynie odrzucenia sprawy. Ten, który odwalił, czy próbowałeś w swoim systemie ?. Niektórzy ludzie po prostu przychodzą do SO, aby zgodzić się. Jeśli uważasz, że ta odpowiedź nie jest przydatna, podaj uzasadnienie/sugestię. ** Nie po prostu zgłaszają ** –

1

Jeśli chcę mieć zaznaczone pole wyboru Create zrobić coś takiego w widoku:

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

wiem, że to nie jest elegancka rozwiązanie, ale działa.

Powiązane problemy