jQuery(...).activeform не является функцией в Yii

Я разрабатываю проект с Yii.

Мне нужно использовать jquery UI на многих страницах сайта. Поэтому я добавляю базовую библиотеку jquery и библиотеку jquery ui в макет сайта, чтобы иметь доступ к ним на всех страницах.

Но это вызывает проблемы на страницах, которые имеют форму (активную форму). Я вижу эту ошибку на firebug:

jQuery(...).activeform is not a function

почему это так? Как я могу решить это?

Спасибо.

4 ответа

Решение

Если вы включите основные библиотеки jQuery вручную в файл макета, вполне возможно, что jQuery будет загружен во второй раз и переопределит исходный объект jQuery, к которому подключены плагины Yii.

Вы должны использовать Yii::app()->clientScript->registerCoreScript('jquery.ui') вместо.

Добавьте этот код с вашим путем к js в head.php

<?php Yii::app()->clientScript->scriptMap = array(YII_DEBUG ? 'jquery.js' : 'jquery.min.js' => '/js/jquery-3.3.1.min.js'); ?>
<?php Yii::app()->getClientScript()->registerCoreScript('jquery'); ?>

Возможно, вы загрузили jquery дважды на своей странице, пожалуйста, проверьте ваш код в layout / main.php и где бы вы ни зарегистрировали jquery. Загрузка кода jquery по умолчанию в yii выглядит примерно так:

Yii::app()->clientScript

Пожалуйста, проверьте эту строку, если вы загружаете jquery здесь, и вы, возможно, также загрузили jquery в свой макет. Лучший способ проверить это - использовать отладчик html и просмотреть исходный код той же страницы, где вы получаете ошибку.

Создайте в папке js файл с именем yii.activeForm.js и скопируйте содержимое с https://codeclimate.com/github/yiisoft/yii2/framework/assets/yii.activeForm.js/source.

Не забудьте включить файл в AppAsset.php.

Другие вопросы по тегам