Yii模型规则:仅允许在itemAlias中指定的值

时间:2013-07-06 14:53:59

标签: php yii

作为一名长期的程序程序员,我终于与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;
  }

?>

1 个答案:

答案 0 :(得分:1)

您可以使用内置in验证程序(实际上是CRangeValidator)。

array('currency','in','range'=>array_keys(self::itemAlias('???')));

当然,您需要插入正确的$type

旁注:请重新考虑您的缩进风格 - 这很不寻常,使您的代码难以阅读;)