首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CodeIgniter:使用URL段定向到函数

CodeIgniter:使用URL段定向到函数
EN

Stack Overflow用户
提问于 2009-07-09 20:04:19
回答 2查看 9.1K关注 0票数 1

我正在为我的公司开发一个调查系统,我在系统中设置了它,因此有两种方式进行调查。

1)新的调查者没有事先的信息

2)调查已发出,并创建了会话。

在第一种情况下,我希望我的URL如下所示:

mydomain.com/SurveySystem/index.php/survey/$surveyID

($surveyID是要进行的调查的整数)

第二种情况是,我们为考生创建了一个链接。我希望URL看起来像这样:

mydomain.com/SurveySystem/index.php/survey/$surveySessionID/$guestID

在我的Survey类中,我将其设置为:

函数index(){

代码语言:javascript
复制
$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所在的位置,它会认为我在控制器中加载了一个方法。

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-09 20:08:58

使用URI routing覆盖默认的控制器/函数/参数映射。

示例:application/config/routes.php中的

代码语言:javascript
复制
$route['survey/:num'] = "survey/take_suvey";

奖励:您还可以删除index.php/部分,请参阅Removing the index.php file

票数 7
EN

Stack Overflow用户

发布于 2010-06-30 11:35:57

我的问题是,有了一个不友好的URL,你为什么要关心它看起来是什么样子呢?从用户的角度来看,它不是语义的。是的,您应该删除index.php。再加上URL重写,整个事情应该从以下方面简化:

mydomain.com/SurveySystem/index.php/survey/????

mydomain.com/survey/

您的CI类方法可以简化为"take“或"submit”,以及随后的“审查”。

应使用cookies或CI的会话类来管理会话。如果您需要跟踪URI中的状态,请使用base64编码将特定于调查的“会话”和"guestID“合并到一个段中。

最后,使用建议的路线,您的应用程序将无法知道要加载的调查ID。它需要捕获":num“并将其提供给take_survey:

$route['survey/(:num)'] = "survey/take_survey/$1";

如果将数字ID作为/survey之后的第一个数据段,则需要在该数据段之后放置另一个路由,以处理该数据段是会话ID的情况:

$route['survey/(:num)/(:num)'] = "survey/session_manager/$1/$2";

其中$1和$2分别是会话ID和来宾ID。就我个人而言,我会说这是一种糟糕的形式。分段语义分解:很难确定第一个数字分段的含义(是调查ID还是会话ID),除非您始终可以保证这些路由已就位。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1106165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档