我正在使用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模型,与规则和动作等,看看如何使用表单生成器不依赖于活动记录对象