Codeigniter两个param数据库breadcrumb

时间:2011-08-03 17:17:59

标签: php codeigniter breadcrumbs

我正在使用php框架codeigniter。

我试图在这里创建一个例子:

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

同时从数据库中检索genus(猫)和species(狮子),animals是控制器。我有将genusspecies放在各自数组中的模型。我还想对面包屑中的每个步骤有如下看法:

  • animals
  • animals/feline
  • animals/canine

非常感谢任何帮助。我只是看了autocrumb,就像在视图上显示面包屑控制结构一样,而不是我想要的。

3 个答案:

答案 0 :(得分:2)

我使用URi routing.作为另一种方法,而不是__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);
 }

查看 breadcrumb.php

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

查看文件夹包含:

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

这是你在找什么?

评论后编辑:

看起来我们错了你想要的东西。如果您从DB中检索这些变量,那么您可以这样做:

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 (在文件夹动物中):

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

在您的视图中 genusspecies.php (在动物文件夹中):

<?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";

如果我是你,我会这样走。我做得更好还是我在某处仍然错了?

答案 1 :(得分:0)

向动物控制器添加_remap()功能

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

这假设您有一个名为genus()的方法和一个名为species()

的方法

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

URI库文档: http://codeigniter.com/user_guide/libraries/uri.html

答案 2 :(得分:0)

redirect('animals/' . $genus . '/' . $species);