笨:主导向功能与URL段(CodeIgniter: Directing to functions w

2019-09-18 04:10发布

我工作的一项调查显示系统为我公司和我有它的系统设置,使有两种方法可以参加调查。

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是认为我是装载量在控制器的方法。

感谢您的帮助!

Answer 1:

使用URI路由覆盖默认的控制器/功能/参数映射。

例如:在你application/config/routes.php

$route['survey/:num'] = "survey/take_suvey";

奖励:您也可以删除index.php/部分,请删除index.php文件 。



Answer 2:

我的问题是,一个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),除非你总是可以保证这些航线到位。



文章来源: CodeIgniter: Directing to functions with a URL segment