Задать вопрос

Конфликт js скриптов в Yii2 при работе с формами, как устранить?

В общем копаюсь в Yii2 и набрел на такую ситуацию:

Я разбил свой шаблон на части и есть часть head.php, где подключаются скрипты обычным образом:

...
<script type="text/javascript" src="/js/jquery.cookies.min.js"></script>
<script type="text/javascript" src="/js/jquery.form.js"></script>
<script type="text/javascript" src="/js/main.js"></script>
...


Далее мне понадобилось добавить форму на страницу:
<?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>
  <?= $form->field($model, 'name') ?>
<?= $form->field($model, 'email') ?>
<?= $form->field($model, 'subject') ?>
<?= $form->field($model, 'body')->textArea(['rows' => 6]) ?>
<?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
     'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>',
]) ?>
<div class="form-group">
   <?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
</div>
<?php ActiveForm::end(); ?>


Так вот, когда подключается форма, она тянет за собой еще js скрипты, которые подключаются вниз сайта:
<script src="/assets/5ff4d296/jquery.js"></script>
<script src="/assets/28da076d/yii.js"></script>
<script src="/assets/28da076d/yii.validation.js"></script>
<script src="/assets/28da076d/yii.captcha.js"></script>
<script src="/assets/28da076d/yii.activeForm.js"></script>
<script type="text/javascript">jQuery(document).ready(function(){
jQuery('#contactform-verifycode-image').yiiCaptcha({"refreshUrl":"\/site\/c
...


И походу подключение 2 библиотеки jquery портит мне работу скриптов, которые были подключены выше. Подскажите пожалуйста как тут навести порядок ? Либо отключить подключение jquery либо как это проконтролировать?

Отписал данный вопрос в русском сообществе, но пока молчание... Помогите пожалуйста решить проблему
  • Вопрос задан
  • 10507 просмотров
Подписаться 7 Оценить Комментировать
Решения вопроса 1
metamorph
@metamorph
У Вас два варианта:

Вариант 1. Собираете все свои скрипты в asset (пример см. в /assets/AppAsset.php) и ставите ассету зависимость от JqueryAsset:
public $depends = [
    // 'yii\web\YiiAsset',
    'yii\web\JqueryAsset',
];


Соответственно, регистрируете ассет в нужном месте.

Вариант 2. В конфиге, в разделе "components", прописываете:
'assetManager' => [
    'bundles' => [
        'yii\web\JqueryAsset' => [
            'sourcePath' => null,
            'js' => ['//code.jquery.com/jquery-1.11.0-beta3.min.js'] // тут путь до Вашего экземпляра jquery
        ],
    ],
],


Аналогичным образом, кстати, можно переопределять вообще любые скрипты и css. Очень удобно в случаях, когда выходит новая версия (например, BS 3.1) а в Yii2 она, к примеру, пока не ожидается.

PS. Оставьте в покое русское сообщество, оно мертво. Вся движуха на английском.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@smileonl
Для этого нужно использовать ScriptMap www.yiiframework.com/forum/index.php/topic/13988-h...
Ответ написан
Ваш ответ на вопрос

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

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