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 回答