我使用此代码来创建我的表单:
$form=$controller->beginWidget('CActiveForm', array(
'id'=>'my-form',
'enableAjaxValidation'=>false
));
当我这样做时,它会打印表单。但我想把它放在一个变量中,因为整个表单在方法中作为字符串返回。我怎样才能做到这一点?
以下内容获取输出缓冲区,将其存储到变量中,然后将其擦除。享受!!!
ob_start();
$form=$controller->beginWidget('CActiveForm', array(
'id'=>'my-form',
'enableAjaxValidation'=>false
));
$formToStore = ob_get_clean();
您可以使用控制器的 renderPartial 方法返回一个字符串。只需将整个表单单独放在一个文件中,我们称之为_myForm.php
.
然后使用这一行将表单内容写入变量$form
:
$form = $controller->renderPartial('//stuff/_myForm', $data, true);
第三个参数设置为true
将返回该 renderPartial 的内容,而不是回显。这包括“覆盖”小部件本身的回声。
该$data
参数包括您需要传递给表单的任何变量。
文件本身需要在protected/views/stuff/
文件夹中。//
第一个参数的开头是文件夹的快捷方式protected/views/
。
'_myForm'
或者,如果该文件与调用 renderPartial 的位置相同,则仅用于第一个参数。
ob_start
注意:这与使用and的选项在功能上并没有真正的不同ob_get_clean
。这只是更多的 Yii 方式。根据您的具体情况,一个版本可能优于另一个版本。