Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii检索renderPartial文件并将其存储在变量中_Yii - Fatal编程技术网

Yii检索renderPartial文件并将其存储在变量中

Yii检索renderPartial文件并将其存储在变量中,yii,Yii,我在protected/views/directory\u controller\u name下有一个php文件,格式如下 <p> <?php echo $model->title;?> </p> ... 但是要知道,我需要发送一封具有相同模板/布局的电子邮件,以便将文件的渲染存储在一个变量中,如 $msgHTML=$this->renderInternal('u items',数组('model'=>$model)) 如何从文件中获取渲染视图并将其存

我在protected/views/directory\u controller\u name下有一个php文件,格式如下

<p>
<?php echo $model->title;?>
</p>
...
但是要知道,我需要发送一封具有相同模板/布局的电子邮件,以便将文件的渲染存储在一个变量中,如

$msgHTML=$this->renderInternal('u items',数组('model'=>$model))

如何从文件中获取渲染视图并将其存储在变量中? 可能吗

我不想使用:

$msgHTML = '<p>'.$model->title.'</p>'
...
$msgHTML=''.$model->title.

' ...
因为文件很长,我不想重复代码

$msgHTML = $this->renderInternal('_items', array('model'=>$model), true);

我可能遗漏了一些内容,但您不能将return参数设置为true并使用regular render()吗?然后,您可以只使用视图“名称”,而不知道路径。(除非可靠的堆栈跟踪记录器被破坏,否则renderFile和renderInternal将使用相同的完全限定路径参数。至少我可以看到renderPartial()将我的视图文件的完整路径传递给renderFile。)

不要使用renderInternal方法,而是使用。Render internal是低级方法,不应在此类上下文中使用。要捕获输出,只需将$return参数设置为true:

<?php $output = $this->renderPartial('_subView', $dataArray, true); ?>

您可以通过以下方法完成此操作

1) 如果您想获得页眉和页脚(即完整布局)的输出,请执行此操作

//add true in the last parameter if you want a return of the output 
$htmloutput=$this->render('_pdfoutput',array('data'=>'nothing'),true);
2) 同样,如果您不想获取布局文件,只需以相同的方式使用
renderpartial

$htmloutput=$this->renderpartial('_pdfoutput',array('data'=>'nothing'),true);

您将在变量中获得文件的html。在任何地方使用这个

最后我使用这个:$msgHTML=$this->renderFile('protected/views/modelname/_items.php',array('model'=>$model),TRUE);是的,你是对的,renderInternal需要完整的路径/文件名,包括扩展名-我只添加了第三个参数来解决主要问题,tx以进行澄清。
//add true in the last parameter if you want a return of the output 
$htmloutput=$this->render('_pdfoutput',array('data'=>'nothing'),true);
$htmloutput=$this->renderpartial('_pdfoutput',array('data'=>'nothing'),true);