我工作的一项调查显示系统为我公司和我有它的系统设置,使有两种方法可以参加调查。
1)新测量刺辊没有先前信息
2)调查已经送出和会话的创建。
在一个情况下,我想我的URL看起来像:
mydomain.com/SurveySystem/index.php/survey/$surveyID
($ surveyID正在调查采取的整数)
第二种情况将在那里我们创建了考生的链接。 我想URL看起来像这样:
mydomain.com/SurveySystem/index.php/survey/$surveySessionID/$guestID
在我的调查类我把它设置为以下几点:
功能指数(){
$segments = $this->uri->total_segments();
if($segments == 1){
echo "no surveyID set";
return;
}
if($segments == 2){
$this->take_survey($this->uri->segment(2));
}
if($segments == 3){
$this->survey_session($this->uri->segment(3), $this->uri->segment(4));
}
}
如果没有信息传递的它回声就好了。 但是,如果我试图把一个整数,其中的surveyID是认为我是装载量在控制器的方法。
感谢您的帮助!
使用URI路由覆盖默认的控制器/功能/参数映射。
例如:在你application/config/routes.php
:
$route['survey/:num'] = "survey/take_suvey";
奖励:您也可以删除index.php/
部分,请删除index.php文件 。
我的问题是,一个URL是不友好的,为什么你关心它是什么样子都做? 它不是从用户的角度语义。 是的,你应该删除的index.php文件。 耦合的URL重写,整个事情应该从降低:
mydomain.com/SurveySystem/index.php/survey/????
至
mydomain.com/survey/
并且可以减少你的CI类方法来“取”或“提交”,以及随后的“检阅”。
会议应使用cookie或CI的会话类进行管理。 如果您需要跟踪的URI状态,结合您的具体调查,“会议”和“guestID”成一个网段用base64编码。
最后,使用路线的建议,就没有办法为你的应用程序知道要加载哪些调查ID。 这将需要捕获“:NUM”,并喂它take_survey:
$route['survey/(:num)'] = "survey/take_survey/$1";
如果你把数字ID为第一段后/调查,你需要放置一个来处理情况,该段是一个会话ID的情况后,另一条路线:
$route['survey/(:num)/(:num)'] = "survey/session_manager/$1/$2";
凡$ 1和$ 2分别会话ID和客户ID。 就个人而言,我会说这是不好的形式。 您段的语义分解:难以确定什么是第一个数字段的模块(它是一个调查ID或会话ID),除非你总是可以保证这些航线到位。