关于字段的取值

经常需要dropDownList或类似的字段,要取options和值相应的显示项目。

以blog demo为例

/**


	 * @return array post status names indexed by status IDs


	 */


	public function getStatusOptions()


	{


		return array(


			self::STATUS_DRAFT=>'Draft',


			self::STATUS_PUBLISHED=>'Published',


			self::STATUS_ARCHIVED=>'Archived',


		);


	}





	/**


	 * @return string the status display for the current post


	 */


	public function getStatusText()


	{


		$options=$this->statusOptions;


		return isset($options[$this->status]) ? $options[$this->status] : "unknown ({$this->status})";


	}

如果类似的字段非常多(我现在的项目就是这样),会很麻烦。我想将这两个函数放到一个Option类中,这样只要继承一下就可以了。

这样做是否方便可行?还是多写几个函数好,请大家指点。

<?php echo CHtml::dropDownList("userGroup", "", CHtml::listData(SysGroup::model()->findAll(), 'id', 'groupName'))?>

不知道,这个方法可以解决你的问题否。我不明白你说的。

CHtml::listData(SysGroup::model()->findAll(), 'id', 'groupName'))

可以这样取很不错。

Model是否可以不是以数据库为数据源,而是数组。如果可以,上面的findAll()方法是否也可用。

很多不懂,谢谢您的回答。

listData可以用于普通对象和数组。