如何在 Yii 模型中允许文本属性为空?

how to allow text attributes to be empty in Yii model?

我有一个文章模型,文章可以用英文和阿拉伯文两种语言写。

所以每种语言文本都有 2 个属性,我希望在创建和更新时允许这两个属性为空,因为属性类型是文本而不是 varchar。

如何为我需要的内容编写规则?

http://www.yiiframework.com/doc/api/1.1/CStringValidator

array(
   array('text_en','length'),
   array('text_ar','length'),
);

当您从数据库 table 生成模型时,yii 在 rule() 函数中添加如下内容:

array('field1, field2, ...', 'required')

此数组基于数据库列中的 NOT NULL 属性。这意味着,如果数据库字段有 NOT NULL 属性 checked,yi 将其添加到上面的数组中。您需要做的就是从上面的数组中删除您的两个字段。

我不确定你所说的“..知道属性类型是文本而不是 varchar...”是什么意思,但是 Yii 已经内置了机制来定义你的验证规则。

参考Yii documentation了解更多详情。

@hamed 在他的回答中指出了如何使字段成为必填字段。您可以通过指定验证规则为真的场景来添加。例如。

array('field1, field2', 'required', 'on' => array('create', 'update'));

将仅对插入和更新应用 'required' 规则。另一方面。

array('field1, field2', 'required', 'except' => array('create', 'update'));

将仅对除插入和更新之外的所有场景应用 'required' 规则。