1

作为一名长期的程序程序员,我终于切换到 OOP/MVC 与 Yii 的结合。我一点也不后悔,但我有一个很明显的问题。

在由 GII 生成的模型中,我定义了替换值的规则和别名。现在我希望“货币”值只允许在别名中指定的输入。当然我可以做类似 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;
  }

?>
4

1 回答 1

1

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

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

你当然需要插入正确$type的。

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

于 2013-07-07T10:01:41.007 回答