registerJsFile после registerJs

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
azz
Сообщения: 163
Зарегистрирован: 2016.07.06, 17:20

registerJsFile после registerJs

Сообщение azz » 2017.11.09, 13:19

Добрый день. В виде нужно подключить js файл после js кода, который на странице. Выглядит это примерно так:

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

$js = 'var types_json = "'. str_replace('"', '\"', json_encode($types, JSON_UNESCAPED_UNICODE)).'";'.PHP_EOL;
$js .= 'var types = JSON.parse(types_json);';
$js .= 'var new_record='.$model->isNewRecord.';';

$this->registerJs($js);
$this->registerJsFile('@web/js/js.js', ['depends' => 'yii\web\YiiAsset']);
в итоге $js должно стоять выше файла js.js. С приведённым выше кодом, файл подключается раньше. Подскажите, как это сделать?

Аватара пользователя
maleks
Сообщения: 1722
Зарегистрирован: 2012.12.26, 12:56

Re: registerJsFile после registerJs

Сообщение maleks » 2017.11.09, 14:03

$this->registerJs($js, View::POS_HEAD);

Аватара пользователя
porcelanosa
Сообщения: 547
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

Re: registerJsFile после registerJs

Сообщение porcelanosa » 2017.11.09, 14:20

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

$this->registerJs($js, 'myJS');
$this->registerJsFile('@web/js/js.js', ['depends' =>[ 'yii\web\YiiAsset', 'myJS']]);
Так не прокатит?
Хотя нет
depends: array, specifies the names of the asset bundles that this JS file depends on.

Вариант, который предложил maleks - по-моему может не подойти. Код загрузится раньше всех, в шапке, и до YiiAsset - в приведенном примере YiiAsset не нужен, но мало ли.
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы

Аватара пользователя
Dominus
Сообщения: 798
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: registerJsFile после registerJs

Сообщение Dominus » 2017.11.09, 14:44

Тут посмотрите: viewtopic.php?t=16584
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

azz
Сообщения: 163
Зарегистрирован: 2016.07.06, 17:20

Re: registerJsFile после registerJs

Сообщение azz » 2017.11.09, 18:41

maleks писал(а):
2017.11.09, 14:03
$this->registerJs($js, View::POS_HEAD);
Да, так можно, но тогда придётся туда же переносить и jquery. Хотелось бы обойтись очерёдностью загрузки.
Dominus писал(а):
2017.11.09, 14:44
Тут посмотрите: viewtopic.php?t=16584
там не то

urichalex
Сообщения: 948
Зарегистрирован: 2015.08.07, 11:03

Re: registerJsFile после registerJs

Сообщение urichalex » 2017.11.09, 20:43

azz писал(а):
2017.11.09, 18:41
Да, так можно, но тогда придётся туда же переносить и jquery. Хотелось бы обойтись очерёдностью загрузки.
Зачем?

azz
Сообщения: 163
Зарегистрирован: 2016.07.06, 17:20

Re: registerJsFile после registerJs

Сообщение azz » 2017.11.10, 12:30

urichalex писал(а):
2017.11.09, 20:43
Зачем?
что бы весь яваскрипт грузился после отображения контента, видимо

Аватара пользователя
maleks
Сообщения: 1722
Зарегистрирован: 2012.12.26, 12:56

Re: registerJsFile после registerJs

Сообщение maleks » 2017.11.10, 13:49

azz писал(а):
2017.11.10, 12:30
видимо
загрузка "скриптов" после контента касается только js файлов

azz
Сообщения: 163
Зарегистрирован: 2016.07.06, 17:20

Re: registerJsFile после registerJs

Сообщение azz » 2017.11.10, 16:06

так всё-таки, можно ли управлять последовательностью registerJsFile и registerJsFile?

urichalex
Сообщения: 948
Зарегистрирован: 2015.08.07, 11:03

Re: registerJsFile после registerJs

Сообщение urichalex » 2017.11.10, 20:46

azz писал(а):
2017.11.10, 16:06
так всё-таки, можно ли управлять последовательностью registerJsFile и registerJsFile?
depends

Аватара пользователя
ElisDN
Сообщения: 5315
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: registerJsFile после registerJs

Сообщение ElisDN » 2017.11.10, 22:16

azz писал(а):
2017.11.10, 16:06
так всё-таки, можно ли управлять последовательностью registerJsFile и registerJsFile?
https://github.com/yiisoft/yii2/blob/ma ... w.php#L581

Сначала jsFiles, потом JS с POS_END. Вместе никак.

Ответить