我已经阅读了文档,但是无法弄清楚该怎么做,例如,我index.php在视图文件夹中的文件中有一个小脚本,medicine-issue-entry例如:
<?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);
?>
Run Code Online (Sandbox Code Playgroud)
在哪里可以将此代码放在单独的文件中,以及如何在相关文件中包括该代码。详细的过程将不胜感激。谢谢。
好的,我正在使用基本模板。在AppAsset.php我包括像
public $js = [
'js/autorefresh.js'
];
Run Code Online (Sandbox Code Playgroud)
并使用以下代码js在其中创建一个文件夹web folder并创建一个新文件autorefresh.js:
function refresh() {
$.pjax.reload({container:"#medicine_request_entry"});
setTimeout(refresh, 60000); // restart the function every 5 seconds
}
refresh();
Run Code Online (Sandbox Code Playgroud)
在我中index.php我添加了一行
namespace app\assets;
use app\assets\AppAsset;
AppAsset::register($this);
Run Code Online (Sandbox Code Playgroud)
但是,这同样行不通,我还缺少什么吗?当我在文件中包含代码时,registerJs它工作正常。
注意:在查看页面源文件时,文件已正确发布,然后单击链接显示脚本,但代码不起作用。
使用Yii2 基本模板
将autorefresh.js脚本添加到/web/js/目录
function refresh() {
$.pjax.reload({container:"#medicine_request_entry"});
setTimeout(refresh, 60000); // restart the function every 5 seconds
}
refresh();
Run Code Online (Sandbox Code Playgroud)
将脚本添加到$js位于以下位置的AppAsset类中的数组中/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',
];
}
Run Code Online (Sandbox Code Playgroud)
确保您的AssetBundle已注册。
use app\assets\AppAsset;
AppAsset::register($this);
Run Code Online (Sandbox Code Playgroud)
要么
\app\assets\AppAsset::register($this);
Run Code Online (Sandbox Code Playgroud)
注意:不要设置index.php文件的名称空间。