我想我会因为拔毛而成为秃头......
根据CodeIgniter教程以及我之前的经验,我可以轻松确定是否存在第2,第3或第4段或它们的值。
if($this->uri->segment(3)) {
//do something
}
或
if($this->uri->segment(3)=="foo") {
//do something
}
除了FIRST SEGMENT之外的所有其他部分都可以!
我不能对FIRST SEGMENT使用任何条件语句!
if($ this-> uri-> segment(1))不起作用。因为它总是返回true。但我想检查第一段是否存在。当我浏览我的网站时,由于删除了index.php,它看起来像www.domain.com。所有其他控制器都像domain.com/firstcontroller,domain.com/secondcontroller
但是我需要为WEB ROOT创建一个条件。
我尝试了__construct()函数,但它也没有用。
我想做的事情是: 如果当前页面不是webroot(即使没有第一段),或者它不是我的主控制器,我会显示一些HTML。
你能帮帮忙吗?
编辑: 呃......对不起我已经找到了问题所在。这是关于使用正确的运算符。我应该使用XOR而不是OR。因此确定$ this-> uri->段(1)没有问题......它和其他段一样......
答案 0 :(得分:0)
在运行此功能之前,您是否尝试过类型转换?
E.g
$seg = (int) 1; $this->uri->segment($seg);
或者您可以尝试从
中获取数据$seg_array = $this->uri->segment_array();
然后只检查返回的数组。
答案 1 :(得分:0)
不确定为什么你需要这个,你可以在哪里调用它?第一个段始终是执行的控制器的名称,第二个段是来自该控制器的函数的名称。如果您尚未更改默认路由。
$this->uri->uri_string()
会返回控制器/方法。您可能还想查看$this->uri->ruri_string()
并找到更多信息here。希望这会对你有所帮助。
答案 2 :(得分: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
}
答案 3 :(得分:0)
我应该在条件函数中使用XOR而不是OR。因此确定$this->uri->segment(1)
没有问题......它和其他细分市场一样......