一种方法控制器,多视图,Codeigniter

时间:2015-03-30 04:53:19

标签: php codeigniter

所以,让我说我有一个全局视图和特定视图。

在全局视图中,网址可能如下所示(http://example.com/index.php/controller/method/

当它到达特定页面视图时,网址将如下所示: (http://example.com/index.php/controller/method/1989-03-25

全局视图和特定页面视图之间的区别在于,如果在全局视图中它一般显示信息,但在特定页面视图中它将根据详细信息或日期显示。

当然,不仅具有不同的视角,而且它们还具有不同的模型功能。

关键是,我只想让url保持有序(这意味着控制器方法的名称没有变化)。

如何做到这一点。提前致谢。

3 个答案:

答案 0 :(得分:1)

您可以在方法中添加其他参数,例如:

class Your_controller extends CI_controller {
    public function method($params = null)
    {
        // Your Code Here with the condition for processing of the $params variable
    }
}

其中$ params可以是您网址中的内容,如:

http://example.com/controller/method/your-dynamic-params

因此,如果$params为空,则会将模型调用为常规视图,如果$ params具有特定值,则可以使用ifswitch条件调用其他模型声明。希望这会有所帮助...

使用示例更新

你可以像这样使用$ params变量:

if ($params == "1991") {
    $this->load->view('general.html', $params);
} elseif ($params == "1992") {
    $this->load->view('year_1992.html', $params);
} else {
    $this->load->view('other_years.html', $params)
}

通过这种方式,您可以使用$ params作为条件变量来加载不同的视图。

或使用开关:

switch($params) {
    case '1991':
        $this->load->view('general.html', $params);
    break;
    case '1992':
        $this->load->view('year_1992.html', $params);
    break;
    default:
        $this->load->view('other_years.html', $params)
}

注意:使用helper method以避免胖控制器,因为如果函数中有多行代码,则很难测试方法。

答案 1 :(得分:1)

您只需在函数中创建一个参数。并设置param值为null。像这样

class YOUR_CLASS extends CI_controller {
    public function method($params=null) //null is Empty value
    {
           if($params)
           {
              //load your modal and view with your param
           }
           else
           {
              //load your modal and view
           }
    }
}

此方法支持以下类型的网址,没有任何问题。

http://example.com/index.php/YOUR_CLASS/method/

http://example.com/index.php/YOUR_CLASS/method/1989-03-25

希望这会对你有帮助....

答案 2 :(得分:1)

此类用于包装CI_controller,my_base_controller将覆盖CI_controller方法,取决于您的项目需求

class my_base_controller extends CI_controller {

}

您可以按已知状态加载模型,并在my_base_controller类中定义它。

class my_controller extends my_base_controller{
    public function method($params=null) //null is option value
    {

    }
}
祝你好运!