Обращение к функции index с парметром

Не о CI, но о PHP, интерфейсах и веб-проограммировании

Обращение к функции index с парметром

Сообщение S1NTEZ » 19 янв 2010, 12:45

CI/index.php/Controller
Если в фреймворке обратиться напрямую к контроллеру, то по умолчанию запустится функция index

Но если требуется передать параметр для функции index
то придется обращаться по следующему адресу
CI/index.php/Controller/index/param

Вопрос в том, как убрать из строки, имя процедуры по умолчанию index
Можно ли как то заставить контроллер определять что передается, параметр или вызывается другая функция. И если такой функции нет, то использовать запрос как параметр для функции index

Надеюсь понятно объяснил )
S1NTEZ
 
Сообщения: 10
Зарегистрирован: 16 окт 2009, 17:12

Re: Обращение к функции index с парметром

Сообщение Be3 » 19 янв 2010, 13:07

Ответ на ваш вопрос в документации http://code-igniter.ru/user_guide/general/routing.html
Аватара пользователя
Be3
Киборг убийца
 
Сообщения: 285
Зарегистрирован: 02 июл 2008, 06:25
Откуда: NSK

Re: Обращение к функции index с парметром

Сообщение radioheaded » 19 янв 2010, 13:09

Мне кажется, вы еще не дочитали или не начинали читать документацию CI. Насколько я понял, вам вместо /controller/index/param нужно просто /controller/param. Для этого в контроллере controller объявите функцию param, именно она будет вызываться в данном случае.
radioheaded
 

Re: Обращение к функции index с парметром

Сообщение Tovit » 20 янв 2010, 11:37

по-моему, Вы тоже не дочитали... ;)

Создайте в своем контроллере метод _remap($method) и определяйте в в нем какую именно функцию нужно вызвать. Этот метод будет вызван в первую очередь в случае существования. Первым параметром передается имя метода который пытались вызвать. Таким образом, в этом параметре будет Ваш первый параметр.

Пример:
Код: Выделить всё
public function _remap($method ''){
        
$f func_get_args();
        if(
method_exists($this$method) && $method[0] != '_'){ //запрет вызова методов имя которых начинается с "_"
            
$f array_slice($f1);
            return 
call_user_method_array($method$this$f);
        } else {
            return 
call_user_method_array('index'$this$f);
        }
    }
 
Фантазия! Фантазия! Она поможет... не форум!
Аватара пользователя
Tovit
Модератор
 
Сообщения: 1230
Зарегистрирован: 15 фев 2009, 17:18


Вернуться в Общие вопросы по PHP и веб-программированию

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0