Yii自动生成表单,无需模型


yii generate automatic form without model

我正在使用Yii,我正在尝试做一个自动表单生成器,我有一个字段数组取决于情况,但我不知道如何不使用CActiveForm模型,因为当我创建这样的输入(下面的代码),我收到消息

"Property "cusform.hJd8tiZ7cn" is not defined."

hJd8tiZ7cn是我的自定义字段的id,显然这不是我的模型的属性,谢谢您的帮助。

<?php
//view
foreach($arrfields as $af){
?>
    <div class="row">
    <?php echo $form->labelEx($model,$af['xlabel']); ?>
    <?php echo $form->textField($model,$af['xobjectId'],array('size'=>60,'maxlength'=>128)); ?>
    <?php echo $form->error($model,$af['xobjectId']); ?>
    </div>
<?php
}
?>

使用CHtml助手类。

CActiveForm调用CHtml生成表单,CActiveForm的大多数方法都是在html中相应的"active"方法的包装。

CActiveForm和活动html类仅用于ActiveRecord表单生成,即基于活动记录的表单。由于您不知道字段名,并且它们没有预先链接到DB字段,因此您只需执行如下操作

<?php
//view
foreach($arrfields as $af):
    <div class="row">
        <?php echo CHtml::label($af['xlabel'],$af['xobjectId'] ); ?>
        <?php echo CHtml::textField($af['xobjectId'],"",array('size'=>60,'maxlength'=>128)); ?>
    </div>
<?php endforeach; ?>

这将为您生成静态字段,但它不会给你使用activeRecord表单的所有功能,如验证和错误,如果你想要错误,你将不得不建立自己的CForm模型,与规则和动作等,看看如何使用表单生成器不依赖于活动记录对象