@EVOSandru6

Как выполнить многоуровневое меню из одной таблицы в стиле Yii?

Добрый день, раньше использовал такие 2 функции для вывода иерархичной структуры в виде многоуровневого меню. Функция рекурсивная, вызывает сама себя. Попробовал оформить в стиле Yii, но пока немного в нем теряюсь.

Особенно смущают места - mysql_num rows() , mysql_query(), mysql_fetch_array()

Структура Таблицы - CODE, CODE_PAR, NAME

Также интересует, что нужно поменять в функции view_cat, чтобы в итоге у меня имелись объекты класса и я мог оперировать его свойствами, это функцию я пока никак не изменял. Помогите пожалуйста Yii кудесники \

[PHP]
public function getCat(){

//$sql = "SELECT CODE, `NAME`, CODE_PAR FROM t_product";
$condition = Product::findAll();

//$result = mysql_query($sql);

//if(!$result) return null;
if(!$condition) return null;

$arr_cat = array();

if(count(Product::model()->findAll()) != 0){
for($i = 0; $i < count(Product::model()->findAll()); $i++){

//$row = mysql_fetch_array($result, MYSQL_ASSOC);
$row = $condition;

//if(empty($arr_cat[$row['CODE_PAR']]))
if(empty($arr_cat[$row->CODE_PAR]))
//$arr_cat[$row['CODE_PAR']][] = array();
$arr_cat[$row->CODE_PAR][] = array();

// $arr_cat[$row['CODE_PAR']][] = $row;
//$arr_cat[$row->CODE_PAR][] = $condition;
$arr_cat[$row->CODE_PAR][] = $row;
}
}
return $arr_cat;
}

public function view_cat($arr, $code_par = 0){
if(empty($arr[$code_par])) return;
echo "
  • ";
    for($i = 0; $i < count($arr[$code_par]); $i++){
    echo '
  • ' .$arr[$code][$i]['TITLE'] ...';
    $this->view_cat($arr, ($arr[$code_par][$i]['CODE']));
    echo '';
    }
    echo '
';
}

// вызов
$root = $model->getCat();
$model->view_cat($root);

[/PHP]
  • Вопрос задан
  • 2938 просмотров
Пригласить эксперта
Ответы на вопрос 2
reffy
@reffy
Я молодец.
Боже мой, мои глаза!
Ответ написан
Комментировать
Remmi
@Remmi
> Особенно смущают места - mysql_num rows() , mysql_query(), mysql_fetch_array()
Они закомментированы и вместо них стоит AR Product.

Работать с БД можно через PHP PDO: php.net/manual/ru/pdo.query.php
Yii DAO: yiiframework.ru/doc/guide/ru/database.dao
Или Yii Active Record: yiiframework.ru/doc/guide/ru/database.ar

Например, вместо функций getCat и viewCat вынесите категории в отдельную таблицу и создайте для них AR-модель. Тягать существующие категории из списка товаров - не есть хорошо.

Вместо getCat() будет Category::model()->findAll(), а вместо viewCat($code_par) будет Category::model()->findByPK()

UPD: а, там несколько уровней. Тогда в таблице с категориями дополнительно храните parent_id у категорий, и исходите из этого при выборке.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы