2012-06-08 21 views
0

我想我會成爲一個禿頭,因爲拉我的頭髮...如何確定CodeIgniter中是否存在第一個段?

根據CodeIgniter教程和我以前的經驗,我可以很容易地確定是否存在第二,第三或第四段或它們的值是什麼。

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。

你能幫忙嗎?編號: 錯誤......對不起。我已經找到了問題。這是關於使用正確的操作員。我本來應該使用XOR而不是OR。所以確定$ this-> uri-> segment(1)沒有問題...它與其他分段一樣...

回答

0

我應該使用XOR代替或我的條件函數內。所以確定$this->uri->segment(1)沒有問題......它與其他區段一樣...

0

您是否在運行函數之前嘗試過使用類型轉換?

E.g

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

或者你可以嘗試從

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

獲取數據,然後只檢查返回的數組。

+0

對不起。我的問題是關於在if語句中使用運算符。我本來應該使用XOR而不是OR。現在問題已解決。感謝您的幫助嘗試。我會盡快刪除問題。 – scaryguy

0

不知道爲什麼你需要這個和你從哪裏調用它?第一個段總是控制器執行的名稱,第二個段是從該控制器執行的功能的名稱。如果您沒有更改默認路由。

$this->uri->uri_string()將返回控制器/方法。您可能還想檢查$this->uri->ruri_string()並查找更多信息here。希望這可以幫助你。

+0

對不起。我的問題是關於在if語句中使用運算符。我本來應該使用XOR而不是OR。現在問題已解決。感謝您的幫助嘗試。我會盡快刪除問題。 – scaryguy

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 
} 
+0

對不起。我的問題是關於在if語句中使用運算符。我本來應該使用XOR而不是OR。現在問題已解決。感謝您的幫助嘗試。我會盡快刪除問題。 – scaryguy

相關問題