2013-07-31 3 views
0

, поэтому я пытаюсь заставить select2Row работать для меня навсегда, и я просто не могу понять его. То, что я пытаюсь сделать, - предоставить пользователю теги, в которых указано название школы/университета, и в то же время сохранять значение указанного тега при сохранении формы. Я заметил, что я не могу использовать как данные, так и теги, иначе мой drop down не будет заполнен, так что это не вариант. Метки только, кажется, хотят текст, а не текст и соответствующие значения. Есть идеи?YiiBooster Select2Row Data/Tag Issues

<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

попробовать это:

echo $form1->select2Row($model, 'school_id', array(
    'data' => School::model()->schoolNames, 
    'multiple' => 'multiple', 
    'options' => array(
     "width" => '70%', 
    ), 
)); 
Смежные вопросы