You are viewing revision #1 of this wiki article.
This version may not be up to date with the latest version.
You may want to view the differences to the latest version.
this is my way for embed js code block in view file: ~~~ <?php \year\widgets\JsBlock::begin() ?>
$(function(){
jQuery(".company_introduce").slide({mainCell:".bd ul",effect:"left",autoPlay:true,mouseOverStop:true});
});
<?php \year\widgets\JsBlock::end()?> ~~~
and my extension for it:
<?php
/**
* User: yiqing
* Date: 14-9-15
* Time: 下午12:09
*/
namespace year\widgets;
use yii\web\View ;
use yii\widgets\Block ;
class JsBlock extends Block{
/**
* @var null
*/
public $key = null;
/**
* @var int
*/
public $pos = View::POS_END ;
/**
* 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) ;
/*
$jsBlockPattern = '|^<script[^>]*>(.+?)</script>$|is';
if(preg_match($jsBlockPattern,$block)){
$block = preg_replace ( $jsBlockPattern , '${1}' , $block );
}
*/
$jsBlockPattern = '|^<script[^>]*>(?P<block_content>.+?)</script>$|is';
if(preg_match($jsBlockPattern,$block,$matches)){
$block = $matches['block_content'];
}
$this->view->registerJs($block, $this->pos,$this->key) ;
}
}
you can change the namespace for your own !
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.