Home >Backend Development >PHP Tutorial >The difference between Yii render and renderPartial_PHP tutorial

The difference between Yii render and renderPartial_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:30:061036browse

The following are some of the experiences we gained when developing projects at Xinyi Network Company

When rendering page output.

1.render outputs the content of the parent template and embeds the rendered content into the parent template. |
2.renderPartial does not output the content of the parent template. Only the partial content of this rendering is output.
At the same time, there is an important difference:

The processOutput($output) function is executed by default within the

render function, which will render and output the script required by
registered in the component, such as CTreeView, in CClientScript.

And renderPartial() does not automatically render and output client scripts by default. Parameters need to be specified before output:
renderPartial($view,$data=null,$return=false,$processOutput=false)
Set processOutput to true.

For example, if you want to partially output CTreeView, use renderPartial for rendering. If the default processOutput=false is followed, the content will be output. If there is no client script
the output content will be a normal ul list. There is no tree-shaped folding effect. After actively setting processOutput=true, all client scripts required by CTreeView will be output normally at the front of the list.

The following introduces several related functions to be used:
render, renderPartial will not be introduced any more
processOutput()

php
publicfunction render( $view,$data=null,$return=false)
{
 if($this->beforeRender($view))
{
$output=$this-> ;renderPartial($view,$data,true);
 if(($layoutFile=$this->getLayoutFile($this-> layout))!==false)
$this->renderFile($layoutFile,array ('content'=>$output),true); $this

->afterRender($view,$output); $output

=$this->processOutput($output);  

if($return) 
return $output; ;
 }
}

publicfunction renderPartial($view,$data=null,$return=false,$processOutput=false)
{
    if(($viewFile=$this->getViewFile($view))!==false)
    {
        $output=$this->renderFile($viewFile,$data,true);
        if($processOutput)
            $output=$this->processOutput($output);
        if($return)
            return $output;
        else
            echo $output;
    }
    else
        thrownewCException(Yii::t('yii','{controller} cannot find the requested view "{view}".',
            array('{controller}'=>get_class($this),'{view}'=>$view)));
}

publicfunction processOutput($output)
{
    Yii::app()->getClientScript()->render($output);

    // if using page caching, we should delay dynamic output replacement
    if($this->_dynamicOutput!==null&& $this->isCachingStackEmpty())
    {
        $output=$this->processDynamicOutput($output);
        $this->_dynamicOutput=null;
    }

    if($this->_pageStates===null)
        $this->_pageStates=$this->loadPageStates();
    if(!empty($this->_pageStates))
        $this->savePageStates($this->_pageStates,$output);

    return $output;
}

以上在实际操作中还是比较有用的,比如你不想用大组建,可以直接将变量输到模板,也可以将多个变量组成数组输到模版里面去

本文由专注于成都网站建设的信易网络发布,更多关于yii的信息请关注信易网络随后的发布,信易网络的官网http://www.ir58.com

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/767672.htmlTechArticle以下由我们在信易网络公司开发项目的时候终结出的一些经验 在进行页面输出渲染的时候。 1.render 输出父模板的内容,将渲染的内容,嵌...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn