2015-02-21 4 views
0

Я использую CodeIgniter с HMVC, у меня есть контроллер суб с именем отличался от имени модуляCodeigniter маршрутизации с HMVC не работает


- modules 
     - manage 
     - controllers 
      - manage.php 
     - views 
      - dashboard.php 

     - properties 
     - controllers 
      - properties.php 
      - manage.php 
     - views 
      - properties.php 
      - manage.php 
     - projects 
     - controllers 
      - projects.php 
      - manage.php 
     - views 
      - projects.php 
      - manage.php 

, если URL, как этот (индекс работает только)

sitename.com/manage/proprties

это работает отлично, но если я пропустил несколько параметров, (ошибка 404) sitename.com/manage/properties/add

ИЛИ

sitename.com/manage/properties/edit/10

Мои маршрутизации, как это

$route['manage/(:any)']      ="$1/manage"; 
$route['manage/(:any)/(:any)']    ="$1/manage/$2"; 
$route['manage/(:any)/(:any)/(:num)']  ="$1/manage/$2/$3"; 

Как сделать URL sitename.com/manage/properties/edit/10 работает?

ответ

0

В маршрутах у вас есть неправильный. В зависимости от вашей версии codeigniter.

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc

Примеры:

$route['default_controller'] =" folder/controller/index"; // Only works codeigniter 2 so far codeigniter 3 will not allow is bug in codeigniter 3 

$route['name'] =" folder/controller/index"; // Example 

$route['manage'] =" manage/manage/index"; 

$route['manage/add'] =" manage/manage/add"; 

$route['manage/update/(:any)'] =" manage/manage/update/$1"; // (:any) sbsu2783 
$route['manage/update/(:num)'] =" manage/manage/update/$1"; // (:num) 2783 
$route['manage/update/(:any)/(:any)'] =" manage/manage/update/$1/$2"; // Just example 

$route['manage/delete'] =" manage/manage/delete"; 

$route['manage/(:any)'] =" manage/manage/index/$1/$2"; // Not need most of the time 

sitename.com/manage/edit/10

Вам может потребоваться включать index.php или не может, как не уверен, что если вы настроили ваш htaccess.

Например на контроллере site_url('manage/update') .'/'. $this->uri->segment(4);

+0

моя версия Codeigniter - «2.1.3». Используя ваше предложение, я должен добавить маршрутизацию для каждого метода, это то, что вы имеете в виду? – Ahmed

+0

Да, вам нужно установить маршруты для каждого контроллера несколько раз, вам не понадобятся обновления '$ route ['name'] =" folder/controller/function ";' общий способ использования 2.2.1 скачать с http: //www.codeigniter.com/ – user4419336

+0

sitename.com/manage/edit/10 – user4419336

0

Если вы используете HMVC, то для вызова функции Внутренний контроллер не требует маршрутизации. Просто настройте его правильно.

Второй. имя вашего модуля и контроллера одинаковы. поэтому, когда вы звоните локальных/управлять перенаправляет его управления/управления/индекса по умолчанию, но при вызове локальных/управление/обновления это попытаться найти контроллер с именем обновления. поэтому назовите это localhost/manage/manage/update