2011年8月11日

Codeigniterを使ってショッピングカートをゼロから作ってみよう。 # 5

前回ユーザ登録やりますと言って実際作り始めたんですが①ユーザ一覧表示②ユーザ登録ボタンをクリックしたら登録画面という流れを考えると、ユーザ一覧表示した時にナビを表示する必要あるんじゃ・・・

ということでユーザ登録の前にナビ用のパンくずリストを作ります。


■ パンくずリスト( Breadcrumb )
まずパンくずHTMLを返すメソッドをヘルパーに作成。
extension/helpers/html_helpers.php
<?php
function breadcrumb($array)
{
    $count = count($array); $i = 1;
    $html = '<div id="breadcrumb"><ul>';
    foreach($array as $k=>$v)
    {
        $class = (empty($v)) ? ' class="home"' : '';
        if($i != $count)
            $html .= '<li><a href="'.base_url($v).'"'.$class.'>'.$k.'</a></li>';
        else    // no link for the last one
            $html .= '<li class="last"><span>'.$k.'</span></li>';
        $i++;
    }
    $html .= '</ul></div>';
    
    return $html;
}

コントローラーにパンくず用の配列を作成。
admin/application/controllers/users.php
<?php
class User extends Controller
{
    function __construct()
    {
        parent::__construct();
        if( ! _s('admin')) redirect();
    }
    
    function index()
    {
        $this->accounts();
    }
    
    function accounts($page=0)
    {
        $data['breadcrumbs'] = array(_l('HOME')=>'', _l('USERLIST')=>'admin/user');
        $this->layout->view('user/accounts', $data);
    }
}

レイアウトにパンくず表示ラインを追加
admin/application/views/_layouts/main.php
<?php if(isset($breadcrumbs) && is_array($breadcrumbs)) echo breadcrumb($breadcrumbs); ?>


見た目はAppleのようなパンくずリストにしてみました。




■ 最後に
この方法だとパンくずを表示するなら全てのメソッド内に$data['breadcrumbs']を追加しなければいけないんですよね。
他に良いやり方を思いつかなかったのですが、正直このパンくずリストあまりいい方法ではないと思います。
「こうしたほうが良いよ~」とアイデアのある方は是非アドバイスください。

0 件のコメント:

コメントを投稿