1

CIでは、私はモデルを持っています...

<?php

class User_crud extends CI_Model {

var $base_url;
var $category;
var $brand;
var $filter;
var $limit;
var $page_number;

public function __construct($category, $brand, $filter, $limit, $page_number) {
    $this->base_url = base_url();
    $this->category = $category;
    $this->brand = $brand;
    $this->filter = $filter;
    $this->limit = $limit;
    $this->page_number = $page_number;
}

public function get_categories() {
    // output
    $output = "";
    // query
    $this->db->select("name");
    $this->db->from("categories");
    $query = $this->db->get();
    // zero
    if ($query->num_rows() < 1) {
        $output .= "No results found";
        return $output;
    }
    // result
    $output .= "<li><a class=\"name\">Categories</a></li>\n";
    foreach ($query->result_array as $row) {
        $output = "<li><a href=\"\">{$row['name']}</a></li>\n";
    }
    return $output;
}

コントローラーでこれを呼び出している間...

<?php

class Pages extends CI_Controller {

// home page

public function home() {
}

// products page

public function products($category = "cell phones", $brand = "all", $filter = "latest") {
    // loading
    $this->load->model("user_crud");
    // 
}

さて、ロード/インスタンス化中に$category, $brand and $filter変数をモデルに渡すにはどうすればよいですか?user_crud

4

2 に答える 2

2

このようにモデルを使用するべきではありません。必要な機能に必要なアイテムを渡すだけです。

$this->load->model("user_crud");

$data['categories'] = $this->user_crud->get_categories($id, $category, $etc);

(あなたのコードを見た後) 素晴らしいcodeigniter ユーザーガイドを勉強することをお勧めします. それがどのように設計されたのか、あなたが何をしているのかに固執するのはより簡単です。

于 2013-04-04T15:31:47.763 に答える
1

それはいけません。より良いアイデアは、モデルクラスにいくつかのセッターをいくつかのプライベート変数とともにセットアップし、モデルのロード後にそれらを設定することです。

セッターから $this を返す場合は、 $this->your_model->set_var1('test')->set_var2('test2'); のようにチェーンすることもできます。

于 2013-04-04T15:30:51.247 に答える