Как правильно реализовать динамическую навигацию по меню? - PullRequest
1 голос
/ 29 ноября 2011

Я пытаюсь реализовать навигацию по меню и его содержание.У меня нет проблем с получением данных в Model.

Моя текущая проблема - динамическая загрузка каждого элемента в нужном месте.Я застрял на этом.: (

Я хочу иметь возможность загружать содержимое каждой страницы, когда пользователь нажимает на каждый элемент меню.

Пример:

Фолио -> site.com/index.php / className / method / 1 (получить идентификатор = 1)

О нас -> site.com/index.php/className/method/2 (получить идентификатор = 2) ...

Буду признателен, если есть способ оптимизировать и упростить структуру.

Вот мой код на данный момент Контроллер:

public function index() {
    $data = $this->loadPage();
    $this->load->view('content', $data);
}

public function loadPage($categoryID=1) {
    $data['title'] = $this->tabPageData;
    $data['tabMenu'] = $this->model->getAllMenuItems(); 
    $data['tabPhotos'] = $this->model->getAllPicturesByCategory($categoryID, 'url, model');

    return $data;
}

In my Content View:

$this->load->view('top_header.php'); 
$this->load->view('menu.php');
$this->load->view('photos.php');
$this->load->view('footer.php'); 
 ...

 Menu View:
 <?php foreach ($tabMenu as $item) : ?>
  $url = "<ul><li><a href='loadPage/" . $item->cat_id . "'>" . strtoupper($item->name) . "</a></li></ul>";
  echo $url; 
  <?php endforeach; ?>
...

Photo View:
<ul>
<?php foreach ($tabPhotos as $item) : ?>
 <?php echo "<li><img src=". base_url() . "images/photo1/" . $item->url. "></li>"; ?>                   
<?php endforeach; ?>
</ul>

1 Ответ

1 голос
/ 29 ноября 2011

url Пробовали использовать маршруты?

В вашем файле маршрутов добавьте что-то вроде;

$route['page/(:any)'] = "page/load_page/$1";

И иметь контроллер 'page' для чего-то вроде;

public function load_page($cat_id) 
{
    $data = $this->whatever_model->get_page_by_id($cat_id);
    $this->load->view('content', $data);
}

URL, которые вы генерируете, будет что-то вроде; http://www.mysite.com/page/1

Затем вы можете сделать еще один шаг, создав и сохранив симпатичный URL для каждой страницы, а затем выполнить поиск на основе этого URL вместо использования числа. url_title () функция поможет, если вы хотите сделать это.

public function load_page($pretty_url) 
{
    $data = $this->whatever_model->get_page_by_id($pretty_url);
    $this->load->view('content', $data);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...