вывод RadioList

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
fname_lname
Сообщения: 38
Зарегистрирован: 2018.03.15, 12:22

вывод RadioList

Сообщение fname_lname »

как выбрать все значения radioList из таблицы БД в данном случае?

Код: Выделить всё

echo $form->field($model, 'delivery')->label(false)->radioList( [0=>'Почта России, 1 => 'СДЭК', 2 => 'Курьером по городу', 3 => 'Самовывоз'] );
                                    
В контроллере:

Код: Выделить всё

$delivery = MethodDelivery::find()->all();
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: вывод RadioList

Сообщение unknownby »

В контроллере нужно получить такой массив по итогу

Код: Выделить всё

$delivery => [
	0 => "Почта России",
	1 => "СДЭК",
	2 => "Курьером по городу",
	3 => "Самовывоз",
];
В модели MethodDelivery

Код: Выделить всё

public static function findDelivery()
    {
        $delivery = MethodDelivery::find()->all();
        
        foreach ($delivery as $value) {
            $ArrDelivery[$value->delivery_id] = htmlspecialchars_decode($value->delivery_name);
        }
        
        return $ArrDelivery;
    }
В контроллере

Код: Выделить всё

$delivery = MethodDelivery::findDelivery();
А так пробуй в представлении

Код: Выделить всё

<?= $form->field($model, 'delivery')->radioList($delivery, ["item" => function($index, $label, $name, $checked, $value)use($images, $model) {
    return '<div class="radio">' . Html::radio($name, $checked, [
                'value' => $value,
                'label' => Html::encode($label),
    ]) . '</div>';
    }
    ])->label(false); ?>
fname_lname
Сообщения: 38
Зарегистрирован: 2018.03.15, 12:22

Re: вывод RadioList

Сообщение fname_lname »

спасибо
fname_lname
Сообщения: 38
Зарегистрирован: 2018.03.15, 12:22

Re: вывод RadioList

Сообщение fname_lname »

как для второго элемента $value->price добавить стиль <div class="pull-right">?

Код: Выделить всё

public static function findDelivery()
    {
        $delivery = MethodDelivery::find()->all();
        $ArrDelivery = [];
        foreach ($delivery as $value) {
            $ArrDelivery[$value->id] = $value->title . ' ' . $value->price . ' руб';
        }

        return $ArrDelivery;
    }
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: вывод RadioList

Сообщение unknownby »

fname_lname писал(а): 2020.02.20, 19:47 как для второго элемента $value->price добавить стиль <div class="pull-right">?
В принципе ничего сложного, но будет ли пулить вправо как хочется зависит от ширины элемента label, который находится внутри input-а. Если он будет 100%, тогда вправо поедет как задумано. Дописать CSS нужно.

Код: Выделить всё

$ArrDelivery[$value->id] = $value->title . '<div class="pull-right">' . $value->price . ' руб</div>';
И в представлении нужно убрать encode()

Код: Выделить всё

'label' => $label,
fname_lname
Сообщения: 38
Зарегистрирован: 2018.03.15, 12:22

Re: вывод RadioList

Сообщение fname_lname »

как умножить $value->price на итоговую стоимость товаров?
Модель

Код: Выделить всё

 public static function findDelivery()
    {
        $delivery = MethodDelivery::find()->all();

        $ArrDelivery = [];
        foreach ($delivery as $value) {
            $ArrDelivery[$value->id] = $value->title . '<br>'
                . '<small>' . $value->description . '</small><br>'
                . '<font color="#ff4500">' . $value->price . ' р.</font>';
        }

        return $ArrDelivery;
    }
Вид

Код: Выделить всё

<div class="row">
       <div class="col-md-4 col-xs-12">
           <div class="nks">
                  <div class="nks_cart_table_head">Информация для оплаты и доставки заказа</div>
                       <div class="form-group">
                              <?php echo $form->field($order,'email'); ?>
                       </div>
                        <div class="form-group">
                             <?phpecho $form->field($order, 'phone')->textInput(['id' => 'phone_mask']) ?>
                        </div>
                         <div class="form-group">
                               <?php echo $form->field($order,'address'); ?>
                          </div>
                          <div class="form-group">
                               <?php echo $form->field($order,'name'); ?>
                          </div>
                            </div>
                        </div>
                        <div class="col-md-4 col-xs-12">
                            <div class="nks">
                                <div class="nks_cart_table_head">Способ доставки</div>
                                <div class="form-check">
                                    <?= $form->field($order, 'method_delivery')->radioList($delivery, ["item" => function($index, $label, $name, $checked, $value) {
                                        return  \yii\helpers\Html::radio($name, $checked, [
                                                'value' => $value,
                                                'label' => $label,
                                            ]);
                                    }
                                    ])->label(false); ?>
                                </div>
                            </div>
                        </div>
                        <div class="col-md-4 col-xs-12">
                            <div class="nks">
                                <div class="nks_cart_table_head">Способ оплаты</div>
                                <div class="form-check">
                                    <?= $form->field($order, 'method_payment')->radioList($payment, ["item" => function($index, $label, $name, $checked, $value) {
                                        return  \yii\helpers\Html::radio($name, $checked, [
                                            'value' => $value,
                                            'label' => \yii\helpers\Html::encode($label),
                                        ]);
                                    }
                                    ])->label(false); ?>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="cart-total__row">
            <span class="cart-total__label">Стоимость:</span>
            <span class="cart-total__value cart-total__value--old">
                <?php echo Yii::$app->functions->money($session['cart.sum']) ?>
            </span>
        </div>
        <div class="cart-total__row">
            <span class="cart-total__label">Доставка:</span>
            <span class="cart-total__value">
                0
            </span>
        </div>
        <div class="cart-total__row cart-total__row--final">
            <span class="cart-total__label">Итого:</span>
            <span class="cart-total__value">
                <?php echo Yii::$app->functions->money($session['cart.sum']) ?>
            </span>
        </div>
                    
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: вывод RadioList

Сообщение unknownby »

Через JS.
При смене радио кнопки изменить итоговое валуе.
Ответить