Столкнулся с такой проблемой, что когда верстка на странице генерируется с помощью Yii2-виджета Collapse, то в самый конец тэга <body> прописывается примерно следующее:
Код: Выделить всё
jQuery(function ($) {
jQuery('#w0').collapse();
jQuery('#w1').collapse();
jQuery('#w2').collapse();
jQuery('#w3').collapse();
jQuery('#w4').collapse();
});
Код: Выделить всё
public function run()
{
//Тут вызывается метод из трейта BootstrapWidgetTrait
$this->registerPlugin('collapse');
return implode("\n", [
Html::beginTag('div', $this->options),
$this->renderItems(),
Html::endTag('div')
]) . "\n";
}
//Код метода из трейта
protected function registerPlugin($name)
{
$view = $this->getView();
BootstrapPluginAsset::register($view);
$id = $this->options['id'];
if ($this->clientOptions !== false) {
$options = empty($this->clientOptions) ? '' : Json::htmlEncode($this->clientOptions);
$js = "jQuery('#$id').$name($options);";
$view->registerJs($js);
}
$this->registerClientEvents();
}
В том случае если я подключаю код с помощью $this->registerJsFile() он в любом случае будет ниже чем код подключенный с помощью $this->registerJs()
Конечно, я тоже могу воспользоваться методом $this->registerJs() и прописать свой JS код уже в конец того скрипта который создается при инициализации виджета, но этот метод кажется мне костыльным. Есть идеи как можно реализовать это более грамотно?