3

我使用此代码来创建我的表单:

$form=$controller->beginWidget('CActiveForm', array(
            'id'=>'my-form',
            'enableAjaxValidation'=>false
    ));

当我这样做时,它会打印表单。但我想把它放在一个变量中,因为整个表单在方法中作为字符串返回。我怎样才能做到这一点?

4

2 回答 2

3

以下内容获取输出缓冲区,将其存储到变量中,然后将其擦除。享受!!!

ob_start();

$form=$controller->beginWidget('CActiveForm', array(
        'id'=>'my-form',
        'enableAjaxValidation'=>false
    ));

$formToStore =  ob_get_clean();
于 2012-12-22T19:10:32.677 回答
0

您可以使用控制器的 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 方式。根据您的具体情况,一个版本可能优于另一个版本。

于 2012-12-23T23:22:25.630 回答