0

我想我会因为拔头发而变成秃头...

根据 CodeIgniter 教程以及我之前的经验,我可以很容易地确定是否存在第 2、第 3 或第 4 段,或者它们的值是什么。

if($this->uri->segment(3)) {
     //do something
}

或者

if($this->uri->segment(3)=="foo") {
     //do something
}

除第一段外,其他所有段都正常!

我不能对第一段使用任何条件语句!

if($this->uri->segment(1)) 不起作用。因为它总是返回 true。但我想检查第一段是否存在。当我浏览到我的网站时,由于删除了 index.php,它看起来像 www.domain.com 。所有其他控制器都像 domain.com/firstcontroller、domain.com/secondcontroller

但是我需要为 WEB ROOT 创建一个条件。

我尝试了 __construct() 函数,但它也没有工作。

我想做的是:如果当前页面不是 webroot(即使没有第一段)或者它不是我的主控制器,我将显示一些 HTML。

你能帮忙吗?

编辑: Errr ...我很抱歉。我已经弄清楚了问题所在。这是关于使用正确的运算符。我应该使用 XOR 而不是 OR。所以确定 $this->uri->segment(1) 没有问题...它和其他segment一样...

4

4 回答 4

0

您在运行函数之前尝试过类型转换吗?

例如

$seg = (int) 1; $this->uri->segment($seg);

或者您可以尝试从

$seg_array = $this->uri->segment_array();

然后只需检查返回的数组。

于 2012-06-08T10:24:32.593 回答
0

不知道为什么需要这个以及从哪里调用它?第一段总是执行的控制器的名称,第二段是执行的控制器的函数的名称。如果您没有更改默认路由。

$this->uri->uri_string()将返回控制器/方法。您可能还想在此处$this->uri->ruri_string()查看并查找更多信息。希望这对您有所帮助。

于 2012-06-08T10:53:03.517 回答
0
if ($this->router->class != $this->router->default_controller) {
    // Run stuff here
}

自己试试这个:print_r($this->router)

您可以通过以下方式更加确定:

if ($this->router->class != $this->router->default_controller or $this->router->directory or $this->router->method != 'index') {
    // Run stuff here
}
于 2012-06-08T11:47:33.787 回答
0

我应该在条件函数中使用 XOR 而不是 OR。所以确定没有问题$this->uri->segment(1)……和其他段一样……

于 2012-06-09T14:27:18.593 回答