Задача то вроде простая. Есть таблица ид\предок\имя. Как обычно. Хочу реализовать следующее - вывести чекбокслист с отступом у потомков.
[ ] root
[ ] __ 1.1
[ ] __ 1.2
Но listData не позволяет изменить выводимое поле из базы, может это как-то в checkBoxList правиться?
Yii кастомный checkboxlist?
Re: Yii кастомный checkboxlist?
Что мешает пройтись рекурсивно по массиву, добавить отступы и сформировать новую listData?
Re: Yii кастомный checkboxlist?
ну вот такого монстра создал пока
Код: Выделить всё
$connection = Yii::app()->db2;
$sql = '
WITH RECURSIVE temp1 ( p_id,p_parent,p_title,PATH, LEVEL, NAME ) AS (
SELECT T1.p_id,T1.p_parent, T1.p_title, CAST (T1.p_id AS VARCHAR (50)) as PATH, 0 , CAST (T1.p_title AS VARCHAR (255)) as NAME
FROM "SC_Wonder".t_page T1 WHERE T1.p_parent IS NULL
union
select T2.p_id, T2.p_parent, T2.p_title, CAST ( temp1.PATH ||\'->\'|| T2.p_id AS VARCHAR(50)) ,LEVEL + 1 ,
CAST ( \' \'|| temp1.NAME AS VARCHAR(255))
FROM "SC_Wonder".t_page T2 INNER JOIN temp1 ON( temp1.p_id= T2.p_parent))
select * from temp1 where p_parent is not null ORDER BY PATH LIMIT 100
';
$dataReader = $connection->createCommand($sql)->query();
$rows = $dataReader->readAll();
for ($i = 0; $i < count($rows); $i++)
{
if ($rows[$i]['p_parent'] != NULL)
{
$calc = $rows[$i]['level'];
$pad_string = "__";
$text = $rows[$i]['p_title'];
$text = str_pad($text, strlen($text) + ($calc), $pad_string, STR_PAD_LEFT);
$type_list[$rows[$i]['p_id']] = $text;
}
}
$arr_bit = array();
echo CHtml::checkBoxList('im_id', $arr_bit, $type_list, array(
'template' => '{input} {labelTitle}',
'class' => 'chclass',
)
);