yii 中render 和renderpartical的使用

render 和renderpartical之间最大的区别就是:一个是渲染模板,一个不渲染模板。

其中render 输出父模板的内容,将渲染的内容,嵌入父模板。

renderPartial 则不输出父模板的内容。只对本次渲染的局部内容,进行输出。

render函数的说明如下:

public function render($view,$data=null,$return=false)
{
    if($this->beforeRender($view))
    {
        $output=$this->renderPartial($view,$data,true);//渲染子模板
        if(($layoutFile=$this->getLayoutFile($this->layout))!==false)

//将子模版渲染的内容放到content变量中去渲染父模板,在父模板中输出$content
            $output=$this->renderFile($layoutFile,array(‘content‘=>$output),true);

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

$output=$this->processOutput($output);

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

renderpartical函数的说明如下:

public function 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
        throw new CException(Yii::t(‘yii‘,‘{controller} cannot find the requested view "{view}".‘,
            array(‘{controller}‘=>get_class($this), ‘{view}‘=>$view)));
}

通过观察可知,render函数内部默认执行processOutput()函数,而renderpartical函数必须制定才会执行。

我们经常使用的系统,通常头部和底部是相同的,这个时候可以使用布局渲染,每个页面只需要使用这个布局,然后填上中间自己的部分,这样的好处是在修改头部和底部的时候,不用每个页面都修改,只要修改相应的布局页面就可以了。

<div>头部的代码</div>

<?php  echo $content;?> //替换相应的内容

<div>底部的代码</div>

使用的布局的时候,只需要在使用render函数,同时设置布局使用的文件,就可以了。

时间: 2024-11-01 10:15:45

yii 中render 和renderpartical的使用的相关文章

Yii中render和renderPartial的区别

在进行页面输出渲染的时候. 1.render 输出父模板的内容,将渲染的内容,嵌入父模板.|2.renderPartial 则不输出父模板的内容.只对本次渲染的局部内容,进行输出. 同时还有个重要的区别: render 函数内部默认执行processOutput($output)函数, 会将把组件,比如 CTreeView 里面注册到 CClientScript 里面的需要的脚本进行渲染输出. 而renderPartial() 默认不自动渲染输出客户端脚本,需要进行参数的指定,才会输出:rend

在yii中使用分页

yii中使用分页很方便,如下两种方法: 在控制器中: 1. $criteria = new CDbCriteria(); //new cdbcriteria数据库$criteria->id = 'id ASC'; //排序规则 $count = Exchange::model()->count($criteria); $pager = new CPagination($count); $pager->pageSize=30; $pager->applyLimit($criteria

Yii中验证码的设置(五)

好久没写了,正好有时间了,把之前想写的先写上.关于yii中的验证码,这里介绍下验证码的使用,比如后台登陆的时候输入完用户名和密码后,需要再输入验证码这样会更加的安全. 从总体来说 大概分为4个步骤 1.在对用的控制器里建一个新的控制器方法(actions) 2.输入验证码的文本框也用小物件 3.修改关于验证码的核心类文件(CCapthcaAction) 因为存在一点bug 4.然后就是在model里的rules设置规则,判断输入的验证码是否正确了 接下来就详细说下吧 1.我是在后台登陆页面里用

Yii Framework2.0开发教程(4)在yii中定义全局变量

在yii中定义全局变量最好的地方是入口脚本处.也就是web文件夹中的index.php文件 例如我们在defined('YII_ENV') or define('YII_ENV', 'dev');后写上 defined('ZYL_HEHE') or define('ZYL_HEHE','zhyoulun-hehe'); 并在我们教程(1)中建立的views/zhyoulun/helloworld.php文件中写上 <?php echo 'hello world!'; //全局变量 echo co

YII 中的事务处理机制

$model=Post::model(); $transaction=$model->dbConnection->beginTransaction(); try{ $post=$model->findByPk(10); $post->title='new post title'; $post->save(); $transaction->commit(); }catch(Exception $e){ $transaction->rollBack(); } 摘至:h

yii中数据的"增删改查"相关工作!(此文比较乱,需细看)

使用findByPk()根据数据表主键查询的是对象,不需要使用foreach()循环出来 但是使用findall()和find()查询的是对象类型的数组需要使用foreach()循环出来 ======================================= public function getMinLimit () { $sql = "..."; $result = yii::app()->db->createCommand($sql); $query = $r

yii 中引入js 和css 的方式

在yii中 我们需要引入css 和 js 的时候,yii 自身有需要的类. 当我在views 视图层中引入css 和 js , <?php Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl .'/css/articleIndex.css');?> <?php Yii::app()->clientScript->registerScriptFile(Yii::app()->base

yii中第三方库

yii中存在一些路径别名:ext:表示包含了所有第三方扩展的目录  参考:http://www.yiiframework.com/doc/guide/1.1/zh_cn/basics.namespace yiic中第三方扩展使用http://www.yiiframework.com/extensions/?page=11

Yii中单独为module加载Bootstrap或其他组件的4种方法

Bootstrap中包含了丰富的Web组件,根据这些组件,可以快速的搭建一个漂亮.功能完备的网站.但是有时候我们网站前台并不需要Bootstrap,只要管理后台使用Bootstrap,那么该如何单独为一个module加载Bootstrap呢? 这里有4中方法来实现这个:1.在应用的配置文件中添加如下内容 (protected/config/main.php):     'modules'=>array(         'admin'=>array(             'preload'