2011-08-03 12 views
0

私はPHPフレームワークのcodeigniterを使用しています。私はここで作成しようとしていますCodeigniter 2つのパラメータデータベースのブレッドクラム

は一例です:

  • 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を見ましたが、それはすべて私が望むものではなく、ビュー上のブレッドクラムコントロール構造を表示するためのものでした。

+0

コントローラのブレッドクラムを設定してデータベースの結果に基づいて属および種に設定できるようにするブレッドクラムライブラリを見つけるにはどうすればよいですか? –

+0

はい、私はライブラリが必要とは思わない。これを達成するための最も基本的な方法は満足です。 – ThomasReggi

+0

Gotcha ...そして私はDamine Pirsyの解決策を試してみる。私はそれが最善の方法だと思う。 –

答えて

2

私はより良いです__remap()より別のアプローチとして、URi routing.を使用したいが、私はちょうど別の選択肢あなたが

function method($genus,$species) 
{ 

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

ビューを持っています動物のコントローラで

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

を与えたかったですbreadcrumb.php

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

Viewフォルダは含まれています

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

が、これはあなたが探していたものですか?コメントの後に

EDIT:

はSO我々はあなたが何を望むか間違っているように見えます。あなたのビューgenusspeciesで

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

:(フォルダの動物で)ビューgenus.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); 
} 

:あなたはDBからこれらの変数を取得している場合は、次のように行うことができます(フォルダの動物で) .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"; 

私があなただったら、私はこの方法については行きますよ。私はそれをより良くするか、あるいは私はまだどこかで間違っていますか?

+0

このような意味がありますが、主な問題はデータベースのやりとりです。これらの項目がデータベースから取得される変数である場合、私はparam $ 1(属)とparam $ 2(種)の両方のビューを持っていることを提案しています。私は動物のための特定のテンプレート(インデックス方法)、動物/属、動物/属/種を望んでいます。意味...データベースにはより多くの "動物"(動物/爬虫類、動物/爬虫類/ヘビ)などが含まれています。 – ThomasReggi

+0

実際に、質問を再読すると、ブレッドクラムに沿った各ステップのビューを次のようにしたいと考えています: 動物 動物/ネコ 動物/イヌ 'です。それはここの真夜中だと思ったので、私は誤解している可能性があります。 –

+0

ありがとうございます。これは大部分が意味をなさないので、私は今、このハングアップを受けていると思っています。](ci&mvcで2日目)。今私が種を照会するとき、属の方法が支配しています。何か案は? – ThomasReggi

0

これは、あなたが方法がgenus()と呼ばれる方法がspecies()

_remap()ドキュメントと呼ば前提としてい

あなたの動物のコントローラに

if($this->uri->segment(3) === FALSE) 
{ 
    $this->genus(); 
} 
else 
{ 
    $this->species(); 
} 
_remap()機能を追加します。 http://codeigniter.com/user_guide/general/controllers.html#remapping

URIライブラリのドキュメント: をhttp://codeigniter.com/user_guide/libraries/uri.html

0
redirect('animals/' . $genus . '/' . $species); 
関連する問題