所以,让我说我有一个全局视图和特定视图。
在全局视图中,网址可能如下所示(http://example.com/index.php/controller/method/)
当它到达特定页面视图时,网址将如下所示: (http://example.com/index.php/controller/method/1989-03-25)
全局视图和特定页面视图之间的区别在于,如果在全局视图中它一般显示信息,但在特定页面视图中它将根据详细信息或日期显示。
当然,不仅具有不同的视角,而且它们还具有不同的模型功能。
关键是,我只想让url保持有序(这意味着控制器方法的名称没有变化)。
如何做到这一点。提前致谢。
答案 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具有特定值,则可以使用if
或switch
条件调用其他模型声明。希望这会有所帮助...
使用示例更新
你可以像这样使用$ 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)
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
{
}
}
祝你好运!