PHP Codeigniter多级开关语句
我正在用PHP codeigniter重新构建一个网站,该网站主要包含静态页面和一些散布的动态页面。问题是,页面在导航中有1-5层(例如example.com/about/history/people/person/photos) 我不知道如何在控制器中实现这一点。我现在有一组疯狂的switch语句嵌套在switch语句中。下面是一个简单的例子:PHP Codeigniter多级开关语句,php,switch-statement,codeigniter-2,Php,Switch Statement,Codeigniter 2,我正在用PHP codeigniter重新构建一个网站,该网站主要包含静态页面和一些散布的动态页面。问题是,页面在导航中有1-5层(例如example.com/about/history/people/person/photos) 我不知道如何在控制器中实现这一点。我现在有一组疯狂的switch语句嵌套在switch语句中。下面是一个简单的例子: class About extends MY_Controller { //**** INDEX page ****
class About extends MY_Controller
{
//**** INDEX page ****
public function index()
{
$this->setTitle('About');
$this->setDescription('About Stuff');
$this->loadView('about/index');
}
//-------------------------HISTORY section--------------------------------
public function history($sub1 = "", $sub2 = "", $sub3 = "", $sub4 = "")
{
$path = "";
switch($sub1){
//_____ PEOPLE section ____
case 'people':
switch($sub2){
//____ PERSON section ____
case 'person':
switch($sub3){
//**** PHOTOS page ****
case 'photos':
$this->setTitle('Photos');
$this->setDescription('Photo stuff');
$path = 'people/person/photos';
break;
//**** DOCUMENTS page ****
case 'documents':
//Load special scripts
$this->setTitle('Documents');
$this->setDescription('Document stuff');
$path = 'people/person/documents';
break;
//**** INDEX page ****
default:
$this->setTitle('Person');
$this->setDescription('Person stuff');
$path = 'people/person/index';
}
break;
//**** AnotherPerson page *****
case 'anotherPerson':
//Load database
$this->setTitle('AnotherPerson');
$this->setDescription('AnotherPerson stuff');
$path = 'people/anotherperson';
break;
//**** INDEX page ****
default:
$this->setTitle('People');
$this->setDescription('People stuff');
$path = 'people/index';
}
break;
//**** INDEX page ****
default:
$this->setTitle('History');
$this->setDescription('History stuff');
$path = 'index';
}
$this->loadView('about/history/' . $path );
}
}
我觉得我处理得不对,感觉很混乱。所以我的问题是:有没有更好(更紧凑/干净/动态)的方法 您有几个选择
案例“文档”
,您可以将其放入一个私有函数中:
私人职能文件(){
//加载特殊脚本
$this->setTitle(“文档”);
$this->setDescription('Document stuff');
$path=‘人员/人员/文档’;
}$sub
变量调用数组您可以创建一个自定义路由器,允许您在子文件夹中添加控制器(请参阅),例如-在这种情况下,它只允许一个子文件夹,但可以扩展以遍历deeperThank You!这是我绝对可以做到的。