所以我一直试图让select2Row永远为我工作,我似乎无法得到它。我正在尝试做的是为用户提供列出学校/大学名称的标签,同时在保存表单时存储所述标签的值。我注意到我不能同时使用数据和标签,否则我的下拉不会填充,所以这不是一个选项。标签似乎只需要文本,而不是文本和匹配值。有什么想法吗?
<div class="row">
<?php
echo $form->select2Row($model, 'school_id', array(
'asDropDownList'=>false,
'options'=>array(
'tags'=>School::model()->schoolNames,
//'maximumSelectionSize'=>1,
'width'=>'297px',
'tokenSeparators'=>array(','),
),
));
?>
<?php echo $form->error($model,'school_id'); ?>
</div>
这是schoolNames的功能
public function getSchoolNames()
{
$schools = array();
$result = $this->findAllBySQL("SELECT DISTINCT name FROM School");
foreach($result as $school){
$schools[] = $school->name;
}
return $schools;
}
我尝试过使用它,但标签不会填充
public function getSchools()
{
$query = "SELECT id,name FROM School";
$results = $this->findAllBySQL($query);
return CHtml::listData($results, 'id', 'name');
}
所以目前,select2Row正在使用getSchoolNames()生成一个标签列表并且一切正常,除非您使用这些标签提交表单,否则您将获得此标签
Please fix the following input errors:
School must be an integer.
抱歉所有的麻烦,我还是有点新鲜。我确定答案可能就在我面前。谢谢,无论哪种方式=)
答案 0 :(得分:0)
试试这个:
echo $form1->select2Row($model, 'school_id', array(
'data' => School::model()->schoolNames,
'multiple' => 'multiple',
'options' => array(
"width" => '70%',
),
));