Yii2 如何更好的在页面注入CSS

首先

先添加一个widgets,代码如下(提示:使用时注意修改命名空间)

<?php
/**
 * User: yiqing
 * Date: 2014/12/15
 * Time: 0:21
 */

namespace yearwidgets;


use yiiwidgetsBlock;

class CssBlock extends Block
{

    /**
     * @var null
     */
    public $key = null;
    /**
     * @var array $options the HTML attributes for the style tag.
     */
    public $options = [];

    /**
     * Ends recording a block.
     * This method stops output buffering and saves the rendering result as a named block in the view.
     */
    public function run()
    {
        $block = ob_get_clean();
        if ($this->renderInPlace) {
            throw new Exception("not implemented yet ! ");
            // echo $block;
        }
        // $block = trim($block) ;
        $block = static::unwrapStyleTag($block);

        $this->view->registerCss($block, $this->options, $this->key);
    }

    /**
     * @param $cssBlock
     * @return string
     */
    public static function unwrapStyleTag($cssBlock)
    {
        $block = trim($cssBlock);
        /*
        $jsBlockPattern  = '|^<script[^>]*>(.+?)</script>$|is';
        if(preg_match($jsBlockPattern,$block)){
            $block =  preg_replace ( $jsBlockPattern , '${1}'  , $block );
        }
        */
        $cssBlockPattern = '|^<style[^>]*>(?P<block_content>.+?)</style>$|is';
        if (preg_match($cssBlockPattern, $block, $matches)) {
            $block = $matches['block_content'];
        }
        return $block;
    }
} 

使用

示例如下:

<?php yearwidgetsCssBlock::begin() ?>
<style type="text/css">
.fr {
    float: right;
}
.mt10 {
    margin-top: 10px;
}

.mt15 {
    margin-top: 15px;
}
</style>
<?php yearwidgetsCssBlock::end()?>

总结

为什么要这么写?

这样写的好处有两个,有代码提示和有代码高亮!!

来源地址:http://www.getyii.com/topic/10

原文地址:https://www.cnblogs.com/yhdsir/p/5181697.html