t-alexashka
@t-alexashka
Сразу пишу legacy код

Как использовать виджеты вне php?

Привет друзья!

Есть в Yii виджет к примеру Select2:

<?php echo Select2::widget([
		'name' => 'hiddenselect',
		'data' => $data,
		'options' => ['placeholder' => 'Выберите...'],
		'pluginOptions' => [
			'allowClear' => true
		],
	]); 
?>


Вопрос: как мне еще можно подключить этот виджет чтобы можно было использовать Select2 когда мне нужно, динамически через отдельные js-файлы? А то сейчас для того чтобы ассет с select2 подключился к странице - мне приходится создавать виждет котом выше в скрытом блоке, и только после этого юзать .select2(), в противном случае "Call to undefined function select2()" в консоли.
  • Вопрос задан
  • 51 просмотр
Решения вопроса 2
proudmore
@proudmore
Подключите ассет сами.
UPD.
Радость моя, для того, чтобы начать понимать, вам нужно читать код фреймворка, и пакетов, которые вы используете. К примеру, в случае с Select2 нужный вам ассет подключается в методе registerAssetBundle
Как только пройдете по цепочке вызовов, поймете, что все это запускается из метода run(), который запускается фреймворком.
Чтобы вам решить вашу проблему, внутри метода registerAssetBundle найдите, какой подключается класс, и зарегистрируйте его сами в вашем view файле.
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Как использовать виджеты вне php?

Сам виджет никак. Как же php будет без php работать? А тут еще и методы yii содержаться. Номер не удастся. А вот js скрипты входящие в состав виджета - без проблем.

как мне еще можно подключить этот виджет чтобы можно было использовать Select2 когда мне нужно

Как бы так и есть.

А то сейчас для того чтобы ассет с select2 подключился к странице - мне приходится создавать виждет

Это зря. Если нужны только его js, то достаточно вызвать его Assets::register($view);Так же как это в самом виджете происходит. Откройте код виджета и посмотрите как там регистрируются его assets и возьмите что надо.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы