Question

I am developing a project with Yii.

I need to use jquery ui on many pages of site. So I add jquery core library and jquery ui library in the layout of site to have access to them on all the pages.

But it causes problem on the pages which have a form (active form). I see this error on the firebug :

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

why is it so? How can I resolve it?

Thank you.

Was it helpful?

Solution

If you include jQuery core libraries manually in your layout file, it could be possible that jQuery gets loaded a second time and overrides the original jQuery object which had the Yii plugins attached.

You should use Yii::app()->clientScript->registerCoreScript('jquery.ui') instead.

OTHER TIPS

You might have loaded the jquery twice in your page, please check the your code in layout/main.php and where ever you have registered jquery. To load the jquery default code in yii is something like as follows

Yii::app()->clientScript

Please check this line, if you are loading jquery here and you might have loaded the jquery in your layout also. Best way to check this is to use html debugger and view page source of the same page where you are getting error.

add this code with yours path to js in head.php

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

Make a file in the js folder with the name yii.activeForm.js and copy the contents from https://codeclimate.com/github/yiisoft/yii2/framework/assets/yii.activeForm.js/source.

Don't forget to include the file in AppAsset.php.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top