我在A.php文件夹中有/views/A/视图文件。而且我在A.js文件夹中有js文件,请帮我在视图文件中注册js文件。
据我所知,我必须在视图文件中写入$this->registerJsFile('path/to/file.js');。
但是(问题A)我收到了来自method registerJsFile is not found in a class的PHPStorm消息。
另外(问题B)如果两个文件都在同一个文件夹/views/A/中,我应该在路径中写些什么?
发布于 2015-01-01 17:08:48
是否有任何特定的理由手动包含该文件,而不是创建一个资产包?
在任何情况下,如果您读过documentation regarding assets,您都会注意到在源、发布的和外部资产方面有明显的区别。
其中最重要的部分是源和已发布的资产使用不同的选项来确定是否和如何发布文件。
在您的例子中,您有一个源资产,需要复制到资产目录中。
将registerJsFile调用为hinted in the documentation,将需要发布资产。
在这里,您有两个具体的选项,其中第一个选项可能更快速、更连贯:
web/文件夹中,如web/js/或您喜欢的任何东西,并继续使用registerJsFile()希望这能把事情弄清楚。
发布于 2015-02-26 16:47:47
这并不优雅,但如果您需要在jquery之后注册js文件(如Yii2文档中所示),则可以工作。
<?php $this->registerJsFile(Yii::$app->request->baseUrl.'/js/youFile.js',['depends' => [\yii\web\JqueryAsset::className()]]); ?>发布于 2017-03-30 15:27:11
如果通过以下方式注册js文件:
$this->registerJsFile("@web/js/all.js");这将有效,但您将无法使用jQuery。因为这个文件all.js是在jQuery之前加载的。要在jQuery之后加载,我们让它依赖于'yii\web\YiiAsset'或\yii\web\JqueryAsset。所以它将在jQuery.js之后加载。示例:
$this->registerJsFile("@web/js/all.js",[
'depends' => [
\yii\web\JqueryAsset::className()
]
]);那么\yii\web\JqueryAsset和\yii\web\YiiAsset有什么区别呢?
在jQueryAsset中,js文件将在jQuery.js之后加载,在YiiAsset中,js文件将在yii.js文件之后加载。
如果您想创建您自己的自定义资产束:
<?php
namespace frontend\components;
use yii;
use yii\web\AssetBundle;
class CustomAssets extends AssetBundle
{
public $css = [
"path/to/css/file.css"
];
public $js = [
"path/to/js/file.js"
];
public $depends = [
];
}https://stackoverflow.com/questions/27656777
复制相似问题