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);