$this->render($view),$view能否是动态内容?而不是指定view文件?

如题,因为我的view内容需要动态生成,能否不生成view文件,直接传入view字符串呢?

如果一定要生成view文件,那我得先把这个view内容生成文件再渲染,再删除,太费劲了。

PS:这个动态view内容,跟普通view文件一样,也有<?php $this->widget()?>等Yii语句。

那你可以在控制器里用echo输出内容就可以了!

这个动态view,跟普通view文件一样,有<?php $this->widget();?>这些Yii语句,不能直接echo啊。

:unsure: eval()

我需要的是

平时render是指定一个view文件,yii自己include进来。我希望能够直接传入这个字符串,不需要include了,其他则不变。因为我仍需要yii的<?php $this->widget()?>这些语句,直接echo直接eval是不行的啦。

看了上面的回答,还是不知道你想要的是什么。。 -_-!

不过我这样写:




$view = 'index';


$this->render($view,array(

	'dataProvider'=>$dataProvider,

));



能运行啊,就是说,这个$view可以动态输入?!

像你这样的情况为何还要生成 code字符串,再试图用 render() 去调用呢?如果非要这样肯定是不行的,render系列里都是透过 include 来实现的。

你里面的那些 widgets 也可以直接在 controller 里直接运行。

再看了一次问题,还是没有想明白楼主的意图是什么~~~hightman说得很对了。

PS:咋我每次看到hightman,都会想到广州话:hi佬。。。我承认我比较邪恶 ;)

好吧,我暂时放弃了,唯有把view内容生成view文件,再把文件名写到render里去了。

回复 Davidhhuan

其实我的意图就是,例如一个view文件简单如下

<html>

<head><title><?php echo $title?></title></head>

<?php $this->widget(‘testWidget’);?>

</html>

上面的view内容(从<html>到</html>的内容)的字符串是动态生成,所以我不想自己硬要把他生成文件,render一下,再把它删除。所以希望能直接传入view的内容字符串直接渲染,假设有一个renderContent的方法就好了,呵呵~~