そのため、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.
すべてのトラブルで申し訳ありませんが、私はまだこれに少し慣れていません。きっと答えは目の前にあるはずです。いずれにせよありがとう=)