作为一名长期的程序程序员,我终于结合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
。
旁注:请重新考虑你的独立风格——这很不寻常,让你的代码很难阅读;)