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


Yii model rules: only allow values specified in itemAlias

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

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

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

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

旁注:请重新考虑你的独立风格——这很不寻常,让你的代码很难阅读;)