2015-01-30 14 views
18

Ich möchte Vorlage zu RadioList in yii2 hinzufügen, die ich versuchte, aber ich bin nicht in der Lage, das richtige o/p zu bekommen.Yii 2 - radioList Vorlage

Die HTML ist

<div class="input-wrap"> 
    <label class="gender-head">Gender</label> 
    <label class="signup-radio"> 
     <input type="radio" name="signup-gender" id="signupMale" checked tabindex="3" /> 
     <i></i> 
     <span>Male</span> 
    </label> 
    <label class="signup-radio"> 
     <input type="radio" name="signup-gender" id="signupFemale" tabindex="3" /> 
     <i></i> 
     <span>Female</span> 
    </label> 
</div> 

Die o/p wie diese

enter image description here

Der Yii2 Code, die ich versuchte, ist ...

<div class="input-wrap"> 
    <div class="clearfix"> 
     <?= $form->field($model, 'gender', ['radioTemplate' => '<label class="gender-head">{label}</label><label class="signup-radio">{input}</label>'])->inline()->radioList([1 => 'Male', 0 => 'Female'], ['separator' => '', 'tabindex' => 3]); ?> 
    </div> 
    <div class="help-block"></div> 
</div> 

Ich habe aussehen sollte hat viel auf der Vorlage gesucht, aber keine richtige Antwort bekommen.

+0

bitte Ihre „erwartete Ausgabe“ Inline-Bild –

+0

Ich bin nicht in der Lage Bild hinzufügen, da ich nicht tun habe genug Ruf. – JDpawar

+0

oh, das ist zum Kotzen ... wie wäre es mit Textdarstellung wie 'gender [] Männer [x] Frauen [] andere' –

Antwort

41

Ich habe endlich den Weg durch die wir die Eingangs-Tag-Generierungslogik in Yii2 ändern

Um das oben genannte Ergebnis der Radiobuttons zu erhalten, habe ich den folgenden Code entwickelt

  <div class="input-wrap"> 
       <div class="clearfix" id="UserLogin-gender"> 
        <label class="radio-head">Gender</label> 
        <?= 
        $form->field($model, 'gender') 
         ->radioList(
          [1 => 'Male', 0 => 'Female'], 
          [ 
           'item' => function($index, $label, $name, $checked, $value) { 

            $return = '<label class="modal-radio">'; 
            $return .= '<input type="radio" name="' . $name . '" value="' . $value . '" tabindex="3">'; 
            $return .= '<i></i>'; 
            $return .= '<span>' . ucwords($label) . '</span>'; 
            $return .= '</label>'; 

            return $return; 
           } 
          ] 
         ) 
        ->label(false); 
        ?> 
       </div> 
       <div class="help-block"></div> 
      </div> 

Der " Die Option "item" in der radioList ist eine Callback-Funktion für die in Yii2 geschriebene Logik für die Eingabegenerierung. Wir können das Layout jedes Elements, das mit dieser Callback-Funktion und seinen Parametern erzeugt wird, leicht ändern.

+0

Ja, ich habe den gleichen Ansatz für eine lange Zeit verwendet. Allerdings verstehe ich nicht, warum dein erster Ansatz nicht funktionieren würde. Ich habe die Dokumentation gelesen, es sollte funktionieren. Es wäre eine viel elegantere Lösung. Konnten Sie Ihre ursprüngliche Idee im Laufe der Zeit verwenden? – jeesus

+0

funktioniert, aber die Felder werden nach der Einreichung nicht überprüft –

+0

Ich kann keine andere Variable in "item" verwenden –

1

vielleicht i'am zu spät, aber man kann versuchen, diese

<?= $form->field($model, 'abc')->inline()->radioList(['example1' => 'example1', 'example2' => 'example2'])->label(false) ?> 

Source

-1
$form->field($model, 'gender') 
    ->radioList(array(1 => 'Male', 0 =>'Female'), array('class' => 'i-checks'));    
+2

Warum sollte OP Ihren Code verwenden? Kannst du etwas über deine Antwort hinzufügen? – Zippy