Yii - activeLabelEx乱码问题

不同语种的操作系统当调用Yii的CHtml::activeLabelEx可能导致乱码
<?php echo CHtml::activeLabelEx($model,'当为任务物品'); ?>


原因是Yii框架里CModel类的generateAttributeLabel实现问题没有使用UTF-8
public function generateAttributeLabel($name){
   return ucwords(trim(strtolower(str_replace(array('-','_'),' ',preg_replace('/(?<![A-Z])[A-Z]/', ' \0', $name)))));
}


解决方案如下:

在view里如下方法是用activeLabelEx
<?php echo CHtml::activeLabelEx($model,'attrx'); ?>

在$model所代表的模型类(这里假设有个子类为例)中覆盖attributeLabels方法
public function attributeLabels(){
  $attributeLables = parent::attributeLabels();
  $attributeLables['attrx'] = '是否为任务物品';
  return $attributeLables;
}

就可以了

你可能感兴趣的:(PHP,框架)