2013-04-04 81 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');