Yii2添加到head()和endBody()

Justinvoelker

在开发可以具有多个前端主题的网站时,我正在寻找一种方法,以允许后端用户手动将代码注入头部和身体。两种用例如下:

案例1-样式

  1. 在后端,用户选择一个主题。
  2. 用户喜欢该主题,但希望使链接具有不同的颜色。
  3. 用户可以设置自定义代码以在<head>标签末尾执行,而不必复制和修改主题

情况2-脚本

  1. 用户希望将自定义JavaScript添加到文档末尾,但也需要一个附加的JavaScript库。
  2. 用户可以设置自定义代码以在和<body>标签处执行,而不必复制和修改主题

我了解这两个特定情况都可以通过和使用来部分完成registerCssregisterJs但这些情况会自动将传递给它们的内容包装在<style><script>标签中。我希望有一种方法可以直接将直接指示的内容直接注入head()endBody()方法。其背后的原因是,我不希望限制用户可以注入的内容(也许头部需要脚本标签)。

当前,我只是将要添加的代码存储在params中,然后将它们手动包含在每个主题中,如下所示:

<?php $this->endBody() ?>
<?= $this->params['theme_include_body_end'] ?>

这是不希望的,因为在创建主题时很容易忘记它。我想找到一种自动将我的param值附加到endBody()调用的方法,因此无论何时调用endBody(),都包括我的代码(与head()调用相同)。

陌生人

您可以使用自己的覆盖了方法renderHeadHtml()的View组件renderBodyEndHtml()在这些方法中,可以根据需要注入必要的代码:

namespace common/components;

class View extends \yii\web\View {

    /**
     * @var string Content that should be injected to end of `<head>` tag
     */
    public $injectToHead    = '';

    /**
     * @var string Content that should be injected to end of `<body>` tag
     */
    public $injectToBodyEnd = '';

    /**
     * @inheritdoc
     */
    protected function renderHeadHtml()
    {
        return parent::renderHeadHtml() . $this->injectToHead;
    }

    /**
     * @inheritdoc
     */
    protected function renderBodyEndHtml($ajaxMode)
    {
        return parent::renderBodyEndHtml(ajaxMode) . $this->injectToBodyEnd;
    }

}

在配置文件中:

// ...
'components' => [
    // ...
    'view' => [
        'class' => '\common\components\View',
    ]
]

控制器代码中的某处:

\Yii::$app->view->injectToHead = '...';
\Yii::$app->view->injectToBodyEnd = '...';

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

YII2:使用 YII2 将 javascript 函数添加到传单等值线地图时出错

来自分类Dev

Yii2迁移将新列添加到表中

来自分类Dev

如何将Yii2 jui datepicker添加到GridView中的过滤字段

来自分类Dev

Yii2在执行find()之后将范围添加到AR

来自分类Dev

将垂直分隔线添加到Yii2的Nav小部件

来自分类Dev

在Yii2中将jQuery脚本添加到单个视图

来自分类Dev

将onchange添加到模板yii2文件中的输入

来自分类Dev

将类添加到引导文本框-yii2

来自分类Dev

如何在yii2中的布局中将CSS类添加到body标签?

来自分类Dev

Yii2 将字形添加到数据列中

来自分类Dev

如何将关系属性添加到 gridview yii2?

来自分类Dev

如何将总计添加到 yii2 网格视图的底部

来自分类Dev

Yii2 使用 UrlManager::createUrl() 将语言添加到 URL

来自分类Dev

将类添加到标题Yii2 GridView中的一个单元格中

来自分类Dev

如何将文本框(用户名,密码)添加到Yii2 NavBar?

来自分类Dev

如何将复选框列添加到 yii2 中的现有 gridview 列?

来自分类Dev

Yii2。动态添加属性和规则到模型

来自分类Dev

在Zend Framework 2中将自定义HTML添加到<head>标记

来自分类Dev

在Zend Framework 2中将自定义HTML添加到<head>标记

来自分类Dev

在Symfony 2和MongoDB中将属性添加到FOSUserBundle

来自分类Dev

Yii2-如何将CSS类添加到ActiveForm字段

来自分类Dev

使用Composer将Boostrap 4 Alpha添加到Yii 2高级模板吗?

来自分类Dev

PHP将<Head>文件添加到<Body>

来自分类Dev

Yii2向AssetBundle添加条件

来自分类Dev

Yii2 Display最近添加的成员

来自分类Dev

Yii2 根据条件添加规则

来自分类Dev

添加到地图和设置方法

来自分类Dev

IIS和Yii2漂亮的URL

来自分类Dev

Yii2资产和吞没

Related 相关文章

热门标签

归档