Я пытаюсь перечислить значения из обзора в раскрывающемся списке в Yii. Итак, у меня уже есть функция для объединения древовидного представления в путь, например (пример, первичный\вторичный\терциарный. Я вызываю эту функцию, передавая идентификатор из данных, и функция выбирает родителей, создавая список из базы данных.
public static function getPath($id) {
$post=PlanoAssunto::model()->find('id=:id', array(':id'=>$id));
if ($post->id_pai == null) {
$row=$post->assunto;
$data= $row;
}
else {
$row=$post->assunto;
$row=PlanoAssunto::getPath($post->id_pai).'/'.$row;
$data= $row;}
if (isset($data)) {
return $data;
}
else {
$data = 'Nulo';
return $data;
}
}
Это отлично работает в представлении, используя это:
<?php echo $form->labelEx($model,'id_pai');?>
<?php if (isset($_GET['id'])){
echo PlanoAssunto::model()->getPath($_GET['id']); }
else { echo "Novo Assunto Principal";}
?>
Но теперь я хочу заполнить выбор в форме списком путей. И я не могу запускать функции внутри CHtml::listData. Я пытаюсь использовать эту модель, но безуспешно:
public static function getTypeOptions() {
return CHtml::listData(PlanoAssunto::model()->findAll(),'id','getPath($id)');
}
Итак, что я делаю неправильно? Я не могу найти способ поместить древовидное представление в формате пути в значение, связанное с его идентификатором в базе данных.
Я не могу понять, как я могу заполнить значения в ListData, мой HTML возвращает идентификаторы, но с любыми данными в значении.
<select name="Areaxplanoassunto[idAssunto]" id="Areaxplanoassunto_idAssunto">
<option value="1"></option>
<option value="2"></option>
<option value="3"></option>
<option value="4"></option>
<option value="5"></option>
<option value="6"></option>
<option value="7"></option>
<option value="9"></option>
<option value="10"></option>
<option value="11"></option>
</select>
спасибо (Я из Бразилии, извините за английский)