2012-06-08 3 views
0

Я думаю, что становлюсь лысым из-за того, что потянуло мои волосы ...Как определить, существует ли первый сегмент или нет в CodeIgniter?

Согласно учебному курсу CodeIgniter, а также моему предыдущему опыту, я могу легко определить, существуют ли 2-й, 3-й или 4-й сегменты или каковы их значения.

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

или

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

Все хорошо для всех остальных сегментов, за исключением первого сегмента!

Я не могу использовать условные заявления для ПЕРВОГО СЕГМЕНТА!

если ($ this-> uri-> segment (1)) не работает. Потому что он всегда возвращает true. Но я хочу проверить, существует ли первый сегмент или НЕ. Когда я просматриваю свой сайт, из-за удаления index.php он выглядит как www.domain.com. Все остальные контроллеры идут как domain.com/firstcontroller, domain.com/secondcontroller

НО Мне нужно создать условие для WEB ROOT.

Я пробовал функцию __construct(), но это не сработало.

Что я хочу сделать: Я покажу немного HTML, если текущая страница НЕ является веб-сайтом (даже без 1-го сегмента), или это не мой главный контроллер.

Помогите пожалуйста!

EDIT: Errr ... Извините. Я выяснил эту проблему. Речь шла об использовании правильного оператора. Я должен был использовать XOR вместо OR. Таким образом, нет проблем с определением $ this-> uri-> segment (1) ... Это точно так же, как и другие сегменты ...

ответ

0

Я должен был использовать XOR вместо OR внутри моей условной функции.Поэтому нет проблем с определением $this->uri->segment(1) ... Это точно так же, как и другие сегменты ...

0

Вы пробовали литье типов перед запуском функции?

например

$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

Смежные вопросы