首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将JS文件注册到视图的yii2

问将JS文件注册到视图的yii2
EN

Stack Overflow用户
提问于 2014-12-26 11:53:40
回答 5查看 89K关注 0票数 21

我在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/中,我应该在路径中写些什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-01-01 17:08:48

是否有任何特定的理由手动包含该文件,而不是创建一个资产包?

在任何情况下,如果您读过documentation regarding assets,您都会注意到在源、发布的和外部资产方面有明显的区别。

其中最重要的部分是源和已发布的资产使用不同的选项来确定是否和如何发布文件。

在您的例子中,您有一个源资产,需要复制到资产目录中。

将registerJsFile调用为hinted in the documentation,将需要发布资产。

在这里,您有两个具体的选项,其中第一个选项可能更快速、更连贯:

  1. 将资产移动到web/文件夹中,如web/js/或您喜欢的任何东西,并继续使用registerJsFile()
  2. 为源资产添加一个新的资产包,如上面链接的页面中详细说明的那样指定各种选项。

希望这能把事情弄清楚。

票数 8
EN

Stack Overflow用户

发布于 2015-02-26 16:47:47

这并不优雅,但如果您需要在jquery之后注册js文件(如Yii2文档中所示),则可以工作。

代码语言:javascript
复制
<?php $this->registerJsFile(Yii::$app->request->baseUrl.'/js/youFile.js',['depends' => [\yii\web\JqueryAsset::className()]]); ?>
票数 20
EN

Stack Overflow用户

发布于 2017-03-30 15:27:11

如果通过以下方式注册js文件:

代码语言:javascript
复制
$this->registerJsFile("@web/js/all.js");

这将有效,但您将无法使用jQuery。因为这个文件all.js是在jQuery之前加载的。要在jQuery之后加载,我们让它依赖于'yii\web\YiiAsset'或\yii\web\JqueryAsset。所以它将在jQuery.js之后加载。示例:

代码语言:javascript
复制
$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文件之后加载。

如果您想创建您自己的自定义资产束:

代码语言:javascript
复制
<?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 = [
    ];
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27656777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档