Если Вы о подключении ассетов, то они у меня подключаются во view:
Код: Выделить всё
<?php
use app\modules\confirm\assets\IvrAsset;
IvrAsset::register($this);
?>
<div>Test</div>
Код: Выделить всё
<?php
use app\modules\confirm\assets\IvrAsset;
IvrAsset::register($this);
?>
<div>Test</div>
Я имел ввиду, что текст отобразил тестовый, что бы весь view не отображать.Loveorigami писал(а):Если это тесты - посмотрите, как другие делают виджеты.
У меня для каждого вида свои скрипты, если бы они были общие, то тогда конечно же в виджете.Loveorigami писал(а):Что проще - один раз зарегистрировать ассет в самом виджете или подключать в каждом виде, как делаете вы.
Не думаю, что стоит кого-то учить так делать, писать js-код в компоненте виджета:Loveorigami писал(а):Первая ссылка
http://blog.cybdev.org/sozdanie-vidzhetov-v-yii2
смотрите, тестируйте...
Код: Выделить всё
private function getJs() {
$js = [];
$js [] = "function initialize() {";
$js [] = "var mapOptions = {";
$js [] = "center: new google.maps.LatLng({$this->location['lat']}, {$this->location['lng']}),";
$js [] = "zoom: 11,";
$js [] = "};";
$js [] = "var map = new google.maps.Map(document.getElementById('map-canvas'),";
$js [] = "mapOptions);";
$js [] = "var input = /** @type {HTMLInputElement} */(";
$js [] = "document.getElementById('pac-input'));";
$js [] = "var types = document.getElementById('type-selector');";
$js [] = "map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);";
$js [] = "map.controls[google.maps.ControlPosition.TOP_LEFT].push(types);";
$js [] = "var autocomplete = new google.maps.places.Autocomplete(input);";
$js [] = "autocomplete.bindTo('bounds', map);";
$js [] = "var infowindow = new google.maps.InfoWindow();";
$js [] = "var marker = new google.maps.Marker({";
$js [] = "map: map,";
$js [] = "anchorPoint: new google.maps.Point(0, -29)";
$js [] = "});";
Это вообще не понятно... Вы что-то путаете, или я присоединяюсь к тем, которые не понимают вашей задачи...У меня для каждого вида свои скрипты, если бы они были общие, то тогда конечно же в виджете.
Скрипты виджета, я их и регистрирую в виджете, только не в компоненте виджета а в его view, как обычные view на проекте.Loveorigami писал(а):1. Если скрипты общие - зачем вам тогда виджет? Скрипты для вида подключайте в виде (шаблоне).
2. Если скрипты под виджет (т.е. специфические) - регистрируйте их в виджете.
Спасибо, попробую так.Loveorigami писал(а):Тогда на моем примере.
1. Есть виджет https://github.com/loveorigami/yii2-slimscroll-widget
2. У него есть ассет.
https://github.com/loveorigami/yii2-sli ... lAsset.php
Очевидно, что он не является общим для всех видов.
3. Подключается только тогда, когда объявляется виджет в виде
https://github.com/loveorigami/yii2-sli ... ll.php#L72
Код: Выделить всё
echo \app\modules\confirm\widgets\confirm\ConfirmWidget::widget(['phone' => $phone, 'operation' => $operation]);
Код: Выделить всё
$this->renderAjax('/payment/card/confirm_widget', ['phone' => $phone, 'operation' => 'payment']);