2

したがって、私は一般的に codeigniter と MVC を初めて使用します。私は変換中のアプリを持っていますが、特にビュー内でこのタイプの機能を処理する最善の方法は何だろうと思っていました。

以下の表のようなカテゴリの表があります。

cat_id | parent_id | catname
------------------------------
1       0           this category
2       1           that category

この関数は、cat_id を指定すると、リンクを含む書式設定された文字列を吐き出します。ビューまで URL 項目を処理するべきではないことはわかっているので、結果の配列をビューで処理する方法を CI で書き直すかどうかはわかりません。

考え?以下の元の機能:

    function createPath($id, $category_tbl, $except = null) {
    $s = "SELECT * FROM ".$category_tbl." WHERE cat_id = $id";
    $r = mysql_query($s);
    $row = mysql_fetch_array($r);
    if($row['parent_id'] == 0) {
        $name = $row['catname'];
        if(!empty($except) && $except == $row['cat_id']) {
            return "<a href='index.php'>Admin</a> &raquo; ".$name."";
        }
        //return "<a href='index.php'>Admin</a> &raquo; <a href='index.php?folder_id=$id'>".$name."</a> &raquo; ";
        return "<a href='category.php?catid=$id&category=".$row['slugname']."'>".$name."</a> &raquo; ";
    } else {
        if(!empty($except) && $except == $row['cat_id']) {
            $name = $row['catname'];
            return createPath($row['parent_id'],$category_tbl, false). " $name";
        } 
        $name = $row['catname'];
        return createPath($row['parent_id'],$category_tbl, false). " <a href='category.php?catid=$id&category=".$row['slugname']."'>".$name."</a> &raquo;";
    }
}
4

2 に答える 2

2

私はあなたの関数をライブラリにすばやく(そして私はすぐに)変換する自由を取りました。

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Path {

    function __construct()
    {
        $_CI =& get_instance();
    }

    function create($id, $category_tbl, $except = NULL)
    {
        $_CI->db->from($category_tbl);
        $_CI->db->where('cat_id', $id);
        $query = $_CI->db->get();

        if ($query->num_rows() > 0)
        {
            $row = $query->row();

            if($row->parent_id == 0)
            {
                $name = $row->catname;

                if(!empty($except) && $except == $row->cat_id) {
                    return "<a href='index.php'>Admin</a> &raquo; ".$name."";
                }

                return "<a href='category.php?catid=$id&category=".$row->slugname."'>".$name."</a> &raquo; ";
            }
            else
            {
                if(!empty($except) && $except == $row->cat_id) {
                    $name = $row->catname;
                return $this->create($row->parent_id, $category_tbl, FALSE). " $name";
                }

                $name = $row->catname;
                return $this->create($row->parent_id, $category_tbl, FALSE). " <a href='category.php?catid=$id&category=".$row->slugname."'>".$name."</a> &raquo;";
            }

        }

        return NULL;
    }
}

/* End of file Path.php */
/* Location: ./application/libraries/Path.php */

これを次のように呼び出します。

$this->load->library('path');
$this->path->create($id, $category_tbl, $except);

私はそれをテストしなかったので、そこにいくつかの間違いがあるかもしれませんが、これでボールが転がると思いますか?

于 2012-10-17T20:22:03.437 に答える
2

codeingiter フレームワークの方法でそれを行う........

  1. モデルにクエリ関数を記述します
  2. 次に、コントローラー関数でモデルを呼び出し、結果セットを配列に保存します
  3. 次に、その保存された配列をビューに渡します
  4. ビューでは、その配列を解析し、必要な方法を表示します

    パブリック関数 abc(引数リスト)

    {

     $xyz=$this->model->function_name_in_model(arguemnts);
     $model=array();
     $model['content']=$xyz;
     $this->load->view('view_file_name',$model);
    

    }

モデルページにモデル関数を記述し、ビューファイルで渡された配列を使用します........

コントローラ................

public function createpath($id)

{
   $result = $this->model->getResult($id);

   $model = array();
   $model['content'] = $result;
   $this->load->view('view_file_name_path',$model);

}

モデル...................

public function getResult($id) 

{
   $query_str="SELECT * FROM ".$category_tbl." WHERE cat_id = $id";

    //echo $query_str;exit;
    $res=$this->db->query($query_str);
    if($res->num_rows()>0){
        return $res->result("array");
    }

    return array();

}

ファイルの表示....................................ファイルの表示でコードの $row を $content に置き換えます コードにエラーがないことを前提としています

if($row['parent_id'] == 0) {
    $name = $row['catname'];
    if(!empty($except) && $except == $row['cat_id']) {
        return "<a href='index.php'>Admin</a> &raquo; ".$name."";
    }
    //return "<a href='index.php'>Admin</a> &raquo; <a href='index.php?folder_id=$id'>".$name."</a> &raquo; ";
    return "<a href='category.php?catid=$id&category=".$row['slugname']."'>".$name."</a> &raquo; ";
} else {
    if(!empty($except) && $except == $row['cat_id']) {
        $name = $row['catname'];
        return createPath($row['parent_id'],$category_tbl, false). " $name";
    } 
    $name = $row['catname'];
    return createPath($row['parent_id'],$category_tbl, false). " <a href='category.php?catid=$id&category=".$row['slugname']."'>".$name."</a> &raquo;";
}
于 2012-10-17T20:03:40.980 に答える