Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Yii 2 - radioList Template

Tags:

php

yii2

I want to add template to radioList in yii2, which I tried, but I am unable to get the proper o/p.

The HTML is

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

The o/p should look like this

enter image description here

The Yii2 code which I tried is...

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

I have searched a lot on the template but did not get any proper response.

like image 890
JDpawar Avatar asked Jan 30 '15 11:01

JDpawar


2 Answers

I finally got the way through which we can modify the input tag generation logic in Yii2

To get the above result of the radio buttons, I have developed the following code

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

The "item" option in the radioList is a callback function to the input generation logic written in Yii2. We can easily modify the layout of each element generated using this callback function and it's parameters.

like image 79
JDpawar Avatar answered Nov 17 '22 17:11

JDpawar


maybe i'am too late but you can try this

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

Source

like image 6
24 revs, 19 users 31% Avatar answered Nov 17 '22 18:11

24 revs, 19 users 31%