Codeigniter два параметра базы данных хлебных крошек - PullRequest
0 голосов
/ 03 августа 2011

Я использую кодовый код php framework.

Я пытаюсь создать вот пример:

  • animals/feline/lion
  • animals/feline/tiger
  • animals/feline/snow-leopard
  • animals/canine/wolf
  • animals/canine/coyote

Где genus (кошачий) и species (лев) оба извлекаются из базы данных, а animals является контроллером. У меня есть модели, которые помещают genus и species в соответствующие массивы. Я также хотел бы иметь представления для каждого шага по крошке следующим образом:

  • animals
  • animals/feline
  • animals/canine

Любая помощь будет принята с благодарностью. Я только что посмотрел на autocrumb , и все это было так, как для отображения структуры управления хлебными крошками на виде, а не как я хочу.

Ответы [ 3 ]

2 голосов
/ 03 августа 2011

Я бы использовал URi маршрутизацию. , как другой подход, чем __remap(), что лучше, но я просто хотел дать другой выбор

$route['animals/(:any)/(:any)'] = "animals/method/$1/$2";

У вас, контроллер животныху вас есть

 function method($genus,$species)
 {

   $data['breadcrumb'] = 'animals -> '.$genus.' -> '.$species.
   $this->load->view('breadcrumb', $data);
   $this->load->view('animals/'.$genus.'/'.$species);
 }

view breadcrumb.php :

<div id="breadcrumb">
<?php echo $breadcrumb;?>  <!-- Display: animals -> feline -> lion -->
</div>

Просмотр папки содержит:

breadcrumb.php
animals /
          feline /
                   feline.php
          canine/  
                   wolf.php

Это то, что вы искали?

РЕДАКТИРОВАТЬ после комментариев:

ТАК, похоже, мы ошиблись в том, что вы хотели.Если вы извлекаете эти переменные из БД, вы можете сделать это следующим образом:

function index()
{
  $this->load->view('animals/index');
}

function genus($genus)
{
  $data['genus_data'] = $this->your_model->load_genus_data($genus);
  $this->load->view('animals/genus',$data);
}
function species($genus,$species)
{
 $data['genus_data'] = $this->your_model->load_genus_data($genus);
 $data['species_data'] = $this->your_model->load_species_data($species);
 $this->load->view('animal/genusspecies',$data);
}

На ваш взгляд genus.php (в папке animal):

<?php $genus_data->name;?> is an animal that...Here's a pic in its habitat.

По вашему мнению genusspecies.php (в папке animal):

<?php $species_data->name;?> is a species of genus <?php $genus_data->name;?>....

все это могут быть фрагменты HTML, загружаемые из базы данных;

Ваша маршрутизация можеттогда выгляди так:

$route['animal'] = "animal";
$route['animal/(:any)'] = "animal/genus/$1";
$route['animal/(:any)/(:any)'] = "animal/species/$1/$2";

Если бы я был тобой, я бы пошел по этому пути.Мне лучше или я все еще где-то не прав?

0 голосов
/ 03 августа 2011
redirect('animals/' . $genus . '/' . $species);
0 голосов
/ 03 августа 2011

Добавьте функцию _remap() к контроллеру животных

if($this->uri->segment(3) === FALSE)
{
    $this->genus();
}
else
{
    $this->species();
}

Предполагается, что у вас есть метод с именем genus() и метод с именем species()

_remap() docs:http://codeigniter.com/user_guide/general/controllers.html#remapping

Документы библиотеки URI: http://codeigniter.com/user_guide/libraries/uri.html

...