Modal header footer

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
AlexSergeev1990
Сообщения: 109
Зарегистрирован: 2017.06.22, 10:43

Modal header footer

Сообщение AlexSergeev1990 »

Всем првиет..хочу в области header виджета модального окна сделать панель с кнопками....
'header' => '<label></label><a style="color: #CCC; margin-right: 50px; font-size: 12px; float: right">Номер направления-<span style="color: #0000aa">00568885</span></a><br />
<div class="subnav" style="padding: 3px">
<select class="selectpicker" data-live-search="true" id="standarts" style="width: 100%;">
<option data-tokens="" value="">Стандарты</option>
<?php
foreach ($standarts as $item){?>
<option data-tokens="<?=$item->kod;?>" value="<?=$item->kod;?>"><?=$item->kod;?>&nbsp;<?=$item->title;?></option>
<?}
?>
</select>
</div>',
в таком плане..че то плохо.....
как правильно сделать панельку в Header модального окна?
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Modal header footer

Сообщение Alexum »

Что делает конструкция <?php ?> с foreach внутри строки? Нормально оформляйте код.
AlexSergeev1990
Сообщения: 109
Зарегистрирован: 2017.06.22, 10:43

Re: Modal header footer

Сообщение AlexSergeev1990 »

Alexum писал(а): 2017.07.20, 15:21 Что делает конструкция <?php ?> с foreach внутри строки? Нормально оформляйте код.
у меня там список, который вывожу в цикле
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Modal header footer

Сообщение Alexum »

Внутри значения строковой переменной php вы пытаетесь вызвать цикл foreach. Задумайтесь.
AlexSergeev1990
Сообщения: 109
Зарегистрирован: 2017.06.22, 10:43

Re: Modal header footer

Сообщение AlexSergeev1990 »

Alexum писал(а): 2017.07.20, 16:14 Внутри значения строковой переменной php вы пытаетесь вызвать цикл foreach. Задумайтесь.
если бы я знал как правильно...я бы не просил...но мне нужно панелька в header....или отказаться от виджета модального окна и сделать просто через bootstrap modal?
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Modal header footer

Сообщение Alexum »

Генерируйте отдельно строку с html для селекта и соединяйте с остальным html . Передавайте в 'header' переменную с готовой строкой.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Modal header footer

Сообщение Nex-Otaku »

Если оно работает, то в принципе без разницы, красиво или нет. Читается - и ладно.
Кстати, данные при выводе надо экранировать Html::encode.
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Modal header footer

Сообщение Alexum »

В таком виде, как выложил ТС, не должно работать. Получится html, в котором мёртвым грузом будут теги php.
AlexSergeev1990
Сообщения: 109
Зарегистрирован: 2017.06.22, 10:43

Re: Modal header footer

Сообщение AlexSergeev1990 »

Alexum писал(а): 2017.07.20, 17:05 В таком виде, как выложил ТС, не должно работать. Получится html, в котором мёртвым грузом будут теги php.
блин а как правильно то надо.....
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Modal header footer

Сообщение Nex-Otaku »

1. Сначала сгенерировать HTML-код, записать его в переменную в виде строки.
2. Вставить значение этой переменной в параметры виджета.

Пример:

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

$header = '<label></label><a style="color: #CCC; margin-right: 50px; font-size: 12px; float: right">Номер направления-<span style="color: #0000aa">00568885</span></a><br />
<div class="subnav" style="padding: 3px">
<select class="selectpicker" data-live-search="true" id="standarts" style="width: 100%;">
<option data-tokens="" value="">Стандарты</option>';
foreach ($standarts as $item){
    $header .= '<option data-tokens="' . $item->kod . '" value="' . $item->kod . '">' . $item->kod . '&nbsp;' . $item->title . '</option>';
}    
$header .= '</select>
</div>';

// Вызов виджета
echo MyCoolWidget::widget([
    'header' => $header,
    ...
]);
Почитайте, что такое переменные и зачем они нужны.

P.S. Прямо дежавю )
Ответить