我想问的第一件事是控制器是如何工作的?假设我有一个控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Home extends CI_Controller {
public static $groupId;
public function __construct() {
}
public function index() {
$this->load->model('product_model');
$data['new_products'] = $this->product_model->get_new_products();
$data['featured_products'] = $this->product_model->get_featured_products();
$data['sale_products'] = $this->product_model->get_sale_products();
$data['template'] = 'index';
$data['title'] = 'Home';
$this->load->view('master', $data);
}
public function group($groupId) {
$this->load->model('group_model');
$this->load->model('product_model');
$groupId = array_pop(explode('-', $groupId));
self::$groupId = $groupId;
$data['groupName'] = $this->group_model->get_group_name($groupId);
$data['allGroupWithQuantity'] = $this->group_model->get_group_with_quantity();
$data['products'] = $this->product_model->get_products_by_group($groupId);
$data['template'] = 'group';
$data['title'] = $data['groupName']->groupName;
$this->load->view('master', $data);
}
public function test() {
echo seft:$groupId;
}
}
/* End of file home.php */
/* Location: ./application/modules/front/controllers/home.php */
当我访问http://localhost:8080/ci/
然后http://localhost:8080/ci/television
键入http://localhost:8080/ci/test/
时,我得到白屏。如果在第一次调用控制器(使用控制器中的方法),并且在第二次,我认为控制器不需要重新加载,所以从组方法中,我为 $groupId 设置值,在测试方法中我可以很容易但我不能。也许当我调用测试方法时,控制器会重新加载。
我想问的第二件事,如何通过其他方法传递 $groupId ?记住!$groupId 不存储在控制器中,我从 url 获取它。