Я сейчас изучаю PHP Framework Codeigniter и понимаю основные понятия до тех пор, пока раздел Controllers о _remapping. У меня есть понимание того, как _remapping перезаписывает поведение методов контроллера над URI, например, с www.example.com/about_me на www.example.com/about-me. То, что я хотел бы услышать, – это мнения людей о том, что использовать – метод отмены или метод маршрутизации URI? Я только спрашиваю об этом, как при исследовании этих методов, и кто-то был обеспокоен функциями переназначения, они были направлены на использование маршрутизации URI.
Так..
1) Каков основной распространенный метод использования и профессионал над другим? 2) Лучше ли использовать маршрутизацию URI для версии PHP 5 CI версии 2?
Буду признателен за Ваше мнение!
Предполагая, что вы не хотите использовать действие index
(например, http://www.yourdomain.com/category ) вашего контроллера Categories
, вы можете использовать маршруты.
$route['category/(:any)'] = 'category/view/$1';
Тогда вам просто нужно действие View в контроллере Category для получения имени категории, то есть PHP.
http://www.yourdomain.com/category/PHP
function View($Tag) { var_dump($Tag); }
Если вы все еще хотите получить доступ к вашему действию индекса в своем контроллере, вы можете получить к нему доступ через http://www.yourdomain.com/category/index
Вы должны использовать _remap, если хотите изменить поведение маршрутизации по умолчанию CI.
Например, если вы настроили техническое обслуживание и хотите заблокировать запуск какого-либо конкретного контроллера, вы можете использовать функцию _remap (), загружающую ваше представление, и который НЕ будет вызывать какой-либо другой метод.
Другим примером является использование нескольких методов в вашем URI. Пример:
site.com/category/PHP site.com/category/Javascript site.com/category/ActionScript
Ваш контроллер является category
но методы не ограничены. Там вы можете использовать метод _remap, названный Колином Уильямсом здесь: http://codeigniter.com/forums/viewthread/135187/
function _remap($method) { $param_offset = 2; // Default to index if ( ! method_exists($this, $method)) { // We need one more param $param_offset = 1; $method = 'index'; } // Since all we get is $method, load up everything else in the URI $params = array_slice($this->uri->rsegment_array(), $param_offset); // Call the determined method with all params call_user_func_array(array($this, $method), $params); }
Подводя итог, если текущая маршрутизация CI соответствует вашему проекту, не используйте метод _remap ().
$default_controller = "Home"; $language_alias = array('gr','fr'); $controller_exceptions = array('signup'); $route['default_controller'] = $default_controller; $route["^(".implode('|', $language_alias).")/(".implode('|', $controller_exceptions).")(.*)"] = '$2'; $route["^(".implode('|', $language_alias).")?/(.*)"] = $default_controller.'/$2'; $route["^((?!\b".implode('\b|\b', $controller_exceptions)."\b).*)$"] = $default_controller.'/$1'; foreach($language_alias as $language) $route[$language] = $default_controller.'/index';