Я довольно новичок в 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)
. Я прав в этом предположении? Будет ли иметь более одного подуровня проблемы?
Извините за длинный пост. Спасибо за любую помощь.