作为一名长期的程序程序员,我终于与Yii一起转向OOP / MVC。我完全不后悔,但我有一个可能很明显的问题。
在我的模型中,由GII生成,我定义了替换值的规则和别名。现在我希望'currency'值只允许在别名中指定输入。当然,我可以做类似is_number的事情,大于0且小于4,但在这种情况下,我必须在添加新货币时一直更新我的代码。是否有更简单的方法根据定义的值进行输入验证?
<?PHP
class Affiliateprograms extends CActiveRecord
{
//define rules
public function rules()
{
return array(array('currency', 'required'));
}
//set aliases
public static function itemAlias($type,$code=NULL)
{
$_items = array('currency' => array('1' => 'US Dollar','2' => 'Euro','3' => 'Yen'));
if (isset($code))
return isset($_items[$type][$code]) ? $_items[$type][$code] : false;
else
return isset($_items[$type]) ? $_items[$type] : false;
}
?>
答案 0 :(得分:1)
您可以使用内置in
验证程序(实际上是CRangeValidator
)。
array('currency','in','range'=>array_keys(self::itemAlias('???')));
当然,您需要插入正确的$type
。
旁注:请重新考虑您的缩进风格 - 这很不寻常,使您的代码难以阅读;)