FlexSlider::widget

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Александр Гавриленко
Сообщения: 70
Зарегистрирован: 2017.02.05, 07:46

FlexSlider::widget

Сообщение Александр Гавриленко »

Здравствуйте!!!
Делаю слайдер с выборкой из базы данных.
Подскажите пожалуйста каким образом сделать выборку в свойство items?

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


<?php 

		echo FlexSlider::widget([
		    'items' => 
		    [
		    	"<img src='/images/bottle/'".название изображения."'.png'>",//должно формироваться из базы
		    ],
		    'options' => 
		    [
		        'class' => 'flexslider',
		    ],
		    'pluginOptions' =>
		    [
			    'animation' => 'slide',
			    'animationLoop' => false,
			    'itemWidth' => 185,
			    'itemMargin' => 5,
		    ]
		]);
	?>
Спасибо.
Аватара пользователя
PartyPoison
Сообщения: 69
Зарегистрирован: 2017.04.27, 11:04

Re: FlexSlider::widget

Сообщение PartyPoison »

Александр Гавриленко писал(а): 2017.05.24, 12:30 Здравствуйте!!!
Делаю слайдер с выборкой из базы данных.
Подскажите пожалуйста каким образом сделать выборку в свойство items?

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


<?php 

		echo FlexSlider::widget([
		    'items' => 
		    [
		    	"<img src='/images/bottle/'".название изображения."'.png'>",//должно формироваться из базы
		    ],
		    'options' => 
		    [
		        'class' => 'flexslider',
		    ],
		    'pluginOptions' =>
		    [
			    'animation' => 'slide',
			    'animationLoop' => false,
			    'itemWidth' => 185,
			    'itemMargin' => 5,
		    ]
		]);
	?>
Спасибо.
В виджет вы должны передавать только массив полученный из базы а не формировать сразу изображения, а после в представлении виджета формировать циклом <img src='/images/bottle/'".название изображения."'.png'>.

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

'items' => $images
Александр Гавриленко
Сообщения: 70
Зарегистрирован: 2017.02.05, 07:46

Re: FlexSlider::widget

Сообщение Александр Гавриленко »

А можете помочь мне организовать цикл?
Бьюсь, бьюсь, не получается. Не пойму как этот цикл привязать к item

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

$images = Bottle::find()
			->asArray()
			->orderBy('id')
			->all();

				    
		foreach ($images as $bottle):
			echo "<img src=/images/bottle/".$bottle[name_2].".png>";
		    	echo "<br>";
		endforeach;


		echo FlexSlider::widget([
		    'items' => 
		    [
		       	
		    ],
		    'options' => 
		    [
		        'class' => 'flexslider',
		    ],
		    'pluginOptions' =>
		    [
			    'animation' => 'slide',
			    'animationLoop' => false,
			    'itemWidth' => 185,
			    'itemMargin' => 5,
		    ]
		]);
Спасибо
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: FlexSlider::widget

Сообщение caHek2x »

ну вы же должны знать что такое переменные ... массивы ...
вот и занесите то что творите в цикле в массив ... а потом скормите его в items ...
Аватара пользователя
PartyPoison
Сообщения: 69
Зарегистрирован: 2017.04.27, 11:04

Re: FlexSlider::widget

Сообщение PartyPoison »

Модель :

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

$images = Bottle::find()->asArray()->orderBy('id')->asArray()->all();
Виджет :

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

<?= FlexSlider::widget([
        'items' => $images,
	'options' => 
	[
		'class' => 'flexslider',
	],
	 'pluginOptions' =>
	[
		 'animation' => 'slide',
		 'animationLoop' => false,
		'itemWidth' => 185,
		'itemMargin' => 5,
	]
]); ?>
Представление виджета:

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

<?php foreach($images as $image) : ?>
	<img src="<?= $image->name ?>">
<?php endforeach;>
Что то вроде этого, хотя если вы используете готовое решение и я так понимаю это именно так, то оно не самое лучшее. И проще навоять свой виджет чтобы не страдать от подобных проблем, так как пример приведенный мной возможно не будет работать.
Ответить