1

我使用模型用户(表 tbl_user)在网站上制作了一个注册表单。以及通过规则的必填字段。

但是,我如何处理不在表上的字段的值?即复选框:“接受许可协议。如果未选择该选项则抛出错误?

应该在 User 模型中添加什么以及如何处理控制器中的错误?

PS对不起,如果这个问题很愚蠢。但是我是 Yii 的新手,所以有点困惑。

4

2 回答 2

3

你可以如图所示

您的查看文件

<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',
}
于 2013-06-19T10:06:08.470 回答
1

如您所愿,如果您不想将属性绑定到数据库,您可以使用 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 模型并按上述操作

于 2013-06-19T11:54:33.463 回答