Создание правильных маршрутов во вложенном дереве в codeigniter - PullRequest
0 голосов
/ 03 марта 2010

Я довольно новичок в CodeIgniter и PHP в целом, и у меня есть два вопроса, которые в некоторой степени связаны.

У меня есть вложенное дерево категорий с неограниченной глубиной, которое создает ссылки, такие как myapp.com/language и myapp.com/spanish, но я хотел бы иметь что-то вроде myapp.com/language/spanish.

Для справки, моя модель возвращает массив массивов, таких как:

[Languages] => Array ( [category_id] => 4 [sub] => Array ( [Japanese] => Array ( [category_id] => 5 ) [Spanish] => Array ( [category_id] => 6 )...

Моя вспомогательная функция для создания меню:

function buildMenu($menu_array, $is_sub=FALSE){

    /*
     * If the supplied array is part of a sub-menu, add the
     * sub-menu class instead of the menu ID for CSS styling
     */
    $attr = (!$is_sub) ? ' id="menu"' : ' class="submenu"';
    $menu = "<ul$attr>\n"; // Open the menu container   
    /*
     * Loop through the array to extract element values
     */
    foreach($menu_array as $id => $properties) {

        /*
         * Because each page element is another array, we
         * need to loop again. This time, we save individual
         * array elements as variables, using the array key
         * as the variable name.
         */
        foreach($properties as $key => $val) {

            /*
             * If the array element contains another array,
             * call the buildMenu() function recursively to
             * build the sub-menu and store it in $sub
             */
            if(is_array($val))
            {
                $sub = buildMenu($val, TRUE);
            }

            /*
             * Otherwise, set $sub to NULL and store the  
             * element's value in a variable
             */
            else
            {
                $sub = NULL;
                $$key = $val;
            }
        }

        /*
         * If no array element had the key 'url', set the  
         * $url variable equal to the containing element's ID
         */
        if(!isset($url)) {
            $url = $id;
        }

        /*
         * Use the created variables to output HTML
         */
        $menu .= "<li><a href='$url'>$url</a>$sub</li>\n";

        /*
         * Destroy the variables to ensure they're reset  
         * on each iteration
         */
        unset($url, $display, $sub);

    }
    return $menu . "</ul>\n";

Это приводит меня к моей следующей проблеме. Как получить эти ссылки для вызова динамической функции, которая может вернуть список всех сообщений в этой категории. Я думаю, что если я смогу заставить маршруты работать так, как я хочу, чтобы они были выше, это будет так же просто, как иметь функцию, подобную get_cat_posts($cat_id). Я прав в этом предположении? Будет ли иметь более одного подуровня проблемы?

Извините за длинный пост. Спасибо за любую помощь.

1 Ответ

0 голосов
/ 04 марта 2010

Ну, я отказался от попыток сделать эту работу. Кажется несостоятельным попытаться использовать эту текущую функцию для получения желаемых результатов, поэтому я перешел к использованию только списка смежности и кешированию результатов. Мех.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...