2013-04-04 79 views
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模型?

+0

你很混淆MVC是如何工作的......只是将数据传递给你的模型函数。 – Jakub 2013-04-04 15:29:49

+0

argh我开始发表一个答案,并意识到它可能会让你更加困惑。 theres与你正在做的一堆问题,但真正最好的将是 - 谷歌“net tuts codeigniter”系列。它是一个免费的教程系列视频和示例代码。许多教程都在codeigniter 1.7中,但它与CI 2之间只有一些小的差异。 – cartalot 2013-04-04 18:43:05

+0

如果你真的需要这个功能(我不明白为什么),那么你最好是写图书馆,而不是模型会让你的工作难上加难 – ahmad 2013-04-04 21:36:19

回答

2

你不应该用你的模型是这样,只是通过你需要为你所需要的功能项:

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

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

我建议(看到你的代码之后)你学习神奇的codeigniter userguide为它有很好的例子,并且你采用了一种完全不同的方式(对待模型就像一个对象)。它更简单地坚持它是如何设计的,以及你在做什么。

+1

正确的做法嗯。 – 2013-04-05 03:11:26

1

你不能。一个更好的想法是在模型类中设置一些setter以及一些私人变量,并在加载模型后进行设置。如果你从setters返回$ this,你甚至可以像$ this-> your_model-> set_var1('test') - > set_var2('test2');