我正在使用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
}
?>
答案 0 :(得分:2)
使用CHtml
帮助程序类。
CActiveForm
调用CHtml
来生成表单.CActiveForm的大多数方法都是CHtml中相应“活动”方法的包装器。
CActiveForm
和活动的CHtml类仅用于生成ActiveRecord表单,即基于活动记录的表单。由于您不知道字段名称,并且它们未提前链接到数据库字段,因此您可以执行类似这样的操作
<?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模型,规则和操作等,了解如何使用form builder而不依赖于活动记录对象