Yii2:如何为脚本使用资产包
我已经阅读了文档,但不知道如何做。例如,我在视图文件夹Yii2:如何为脚本使用资产包,yii2,Yii2,我已经阅读了文档,但不知道如何做。例如,我在视图文件夹药品问题条目中的文件index.php中有一个小脚本,如: <?php $js = 'function refresh() { $.pjax.reload({container:"#medicine_request_entry"}); setTimeout(refresh, 60000); // restart the function every 5 seconds } refresh();'; $this-
药品问题条目中的文件index.php
中有一个小脚本,如:
<?php
$js = 'function refresh() {
$.pjax.reload({container:"#medicine_request_entry"});
setTimeout(refresh, 60000); // restart the function every 5 seconds
}
refresh();';
$this->registerJs($js, $this::POS_READY);
?>
并在web文件夹中创建了一个文件夹js
,并使用以下代码创建了一个新文件autorefresh.js:
function refresh() {
$.pjax.reload({container:"#medicine_request_entry"});
setTimeout(refresh, 60000); // restart the function every 5 seconds
}
refresh();
在我的index.php
中,我添加了这一行
namespace app\assets;
use app\assets\AppAsset;
AppAsset::register($this);
但同样的方法不起作用,我是否还遗漏了什么?当我将代码包含在带有registerJs
的文件中时,它工作正常
注意:在查看页面源代码时,文件已正确发布,并单击链接显示脚本,但代码不起作用。使用Yii2的基本模板
将您的autorefresh.js
脚本添加到/web/js/
目录中
function refresh() {
$.pjax.reload({container:"#medicine_request_entry"});
setTimeout(refresh, 60000); // restart the function every 5 seconds
}
refresh();
将脚本添加到位于/assets/AppAsset.php
<?php
namespace app\assets;
use yii\web\AssetBundle;
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'css/site.css',
];
public $js = [
'js/autorefresh.js',
];
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
}
或
注意:您没有设置index.php文件的名称空间
嗨,用户764429-我已经根据建议更新了我的问题,但看起来我仍然缺少一些东西,因为我无法让它工作。ThanksHi user764429-如果我正在使用use assets\AppAsset,我将收到错误-未找到类“assets\AppAsset”
。如果我使用的是use app\assets\AppAsset
,那么我没有得到任何错误,但是脚本不起作用。他的意思是你不使用namespace
语句作为视图,但是他的建议确实缺少了“app”部分。您可以执行使用app\assets\AppAsset;AppAsset::register($this)代码>或\app\assets\AppAsset::register($this)代码>-我个人更喜欢在文件中一次性使用。因为您的代码似乎使用jQuery,所以您的AppAssets
-捆绑包的$dependens
-部分中确实有yii\web\jqueryaset
,对吗?否则,它将包含javascript文件,但没有可调用的jQuery。查看浏览器的错误控制台中的javascript错误。
<?php
namespace app\assets;
use yii\web\AssetBundle;
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'css/site.css',
];
public $js = [
'js/autorefresh.js',
];
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
}
use app\assets\AppAsset;
AppAsset::register($this);
\app\assets\AppAsset::register($this);