我使用模型用户(表 tbl_user)在网站上制作了一个注册表单。以及通过规则的必填字段。
但是,我如何处理不在表上的字段的值?即复选框:“接受许可协议。如果未选择该选项则抛出错误?
应该在 User 模型中添加什么以及如何处理控制器中的错误?
PS对不起,如果这个问题很愚蠢。但是我是 Yii 的新手,所以有点困惑。
你可以如图所示
您的查看文件
<div class="row rememberMe" id="CHECKBOX">
<?php echo $form->checkBox($regForm,'agree'); ?>
<?php echo $form->label($regForm,'agree'); ?>
<?php echo CHtml::link("terms and Conditions",array('message/goodbye'));?>
<?php echo $form->error($regForm,'agree'); ?>
</div>
创建一个扩展 cform 模型的表单,如下所示
传入查看你的 RegisterationForm 模型
$regForm =new RegistrationForm
在你的注册表格中,如图所示
class RegistrationForm extends CFormModel
{
public $agree;
public function rules()
{
return array(
array('agree', 'required', 'requiredValue' => 1, 'message' => 'You should accept term to use our service'),
);
}
public function attributeLabels(){
'agree' => 'I agree the',
}
如您所愿,如果您不想将属性绑定到数据库,您可以使用 CFORM MODEL 或者您可以使用 Cactive Record。最好在没有数据库交互的情况下使用 CFORM 模型,您可以检查他们使用 CFORM MODEL 的默认联系人选项卡。当您只想收集数据没有数据库交互时,您可以使用 CFORM MODEL
您想将数据保存在数据库中的哪个位置,然后您应该复制到数据库模型并保存它,这只是为了收集属性值,例如将其视为您的 cactive 模型
$model=new User() //this extends Cactive record
$regForm=new Registerationform () // this extends CForm Model
现在如果你想保存到模型这样做
$model->attribute=$regForm->AttributeValue
$model->save();
使用此方法只是当您需要更改或在数据库表中添加一些额外字段时,无需更改由 CACTIVERECORD 扩展的整个模型,您只需将属性添加到 CFORMMODEL 模型并按上述操作