Codeigniter, если сегмент URL отсутствует - PullRequest
3 голосов
/ 18 июля 2011

Обнаружив, что третьи сегменты URL можно передать непосредственно параметру функции, я сделал следующее:

Пример URL:

http://www.mysite.com/profile/user/64

Функция в profile контроллере:

function user($user_id) //$user_id is 3rd URL segment
{
   //get data for user with id = $user_id
}

Использование $this->uri->segment(3) возвращает FALSE, если сегмент не существует.С помощью параметра функции я получаю

Отсутствующий аргумент 1

Как я могу вернуть FALSE и не выполнять функцию, если 3-й сегмент URL отсутствует?Я ищу простое решение без заявлений, если это возможно.

Ответы [ 4 ]

4 голосов
/ 18 июля 2011

Вы получаете «Отсутствует аргумент 1», потому что функция не получает аргумент.

Попробуйте

function user(){
    if($this->uri->segment(3)){
        //get data for user with id = $this->uri->segment(3)
    }
}
3 голосов
/ 18 июля 2011

А как насчет аргументов по умолчанию:

function user($user_id = FALSE) //$user_id is 3rd URL segment
{
   //get data for user with id = $user_id
}
2 голосов
/ 04 ноября 2011

Вы также можете использовать это:

 public function user($id = null)
 {
   if(!isset($id))
     exit();

   // get data for user with id = $id
 }

или это

public function user()
{
  if( ! $this->uri->segment(3) )
    exit();

  // get data for user with id = $id
}
0 голосов
/ 22 августа 2018
if ($this->uri->segment(3)) {
  return true
} else {
  return false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...