Чистые URL не могут получить идентификатор функции в CodeIgniter - PullRequest
0 голосов
/ 08 марта 2011

Я использую CodeIgniter в своем проекте, и мне нужно очистить URL.Я использую этот htaccess:

RewriteEngine On
RewriteCond $0 !^(index\.php|images|captcha|css|js|robots\.txt)
RewriteRule ^.*$ index.php [L]

Перенаправление URL работает нормально.Если я использую localhost/example/controll/, это нормально работает, если у меня есть controll в качестве контроллера, но если мне нужно передать значение в контроллер, например localhost/example/controll/how-to-design/, оно говорит, что 404 не найдено.Нужно ли мне получать инструкции по проектированию в классе controll и обрабатывать их?

Ответы [ 3 ]

1 голос
/ 08 марта 2011

URL localhost/example/controll/how-to-design преобразуется в контроллер с именем controll, а метод с именем how-to-design

CI будет искать метод с именем how-to-design, который предположительно не существует.

Если вы хотите передать этот параметр в controll URL-адрес должен быть:

controll/index/how-to-design

function index($param)
{ 
   echo $param; // echoes how-to-design
}

, вы, вероятно, можете исправить это с помощью routing или с помощью index в вашем URI.

0 голосов
/ 08 марта 2011

напишите новую функцию и определите пользовательские маршруты для нее в route.php, если вы хотите ее достичь.

0 голосов
/ 08 марта 2011

Вы не можете по умолчанию в CodeIgniter передавать параметры в индексную функцию контроллера - в вашем примере CI будет искать метод с названием «как проектировать» (который сам по себе невозможен, так как тире не разрешены в Соглашения об именах функций PHP).

Вы можете использовать специальный метод _remap в вашем контроллере для ручной обработки маршрутизации - http://codeigniter.com/user_guide/general/controllers.html#remapping - или вы можете настроить некоторые ручные маршруты в config / rout.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...