请我有一些规则函数,我不想改变其代码(从数据库的基础模型),我使其他规则函数的模型,我想改变它
基本原则是“不想改变”
public function rules() {
return array(
array('start_date, end_date, info, type_id', 'required'),
array('start_date, end_date, type_id', 'length', 'max'=>10),
}
我想改变模型中继承自基本模型的其他函数,这里是它的代码
public function rules()
{
$rules = array(
array('start_date, end_date, type_id', 'length', 'max'=>16),
);
return array_merge($rules,parent::rules());
}
问题是它使用的最大值为10,而不是16,我想它16,即使当我改变最后一行
return array_merge(parent::rules(),$rules);
3条答案
按热度按时间aoyhnmkz1#
它可能不起作用的原因是
'max'=>10
的规则仍然存在于rules()
中,而不管顺序如何。替换规则对我来说是有效的。编辑
要替换使用
'start_date, end_date, type_id'
作为“键”的规则,您需要一个递归的array search:这会检查现有的规则,如果不存在,则将规则添加为
$rules
的最后一个元素。如果有人编辑基类中的第一个元素,例如向规则添加新的属性/字段,则此操作无效。nbysray52#
刚才完成了同样的任务,创建了一个合并helper函数:
然后在rules()函数中调用:
wydwbb8l3#
一种方法是给予规则一个键。
从docs
在您的情况下,您可以在父类中执行此操作:-
在您的孩子班级中:-
编辑:
请记住,如果您只想更新'maxLengthArray'中的'一个'属性...则必须在从父级'unset'之后重新应用其他属性(显然:))。
例如:-仅更改type_id长度...子项将如下所示:-