2016-02-03 2 views
1

Я хочу «глобальную ссылку» для каждого модуля, как это:маршрутизации внутри модулей Codeigniter HMVC

Внутри приложение/Config/routes.php

$route['search'] = 'searchPage'; 

если пользователь вводит поиск в url ему нужно перейти в модуль searchPage, там есть маршруты внутри модуля. Или это мой план, я хочу, чтобы в этом модуле была настроена по умолчанию.

Внутри модули/searchPage/конфигурации/routes.php

$route['searchPage'] = 'Welcome/showMessage'; 

перейти в окно приветствия контроллера с функцией ShowMessage.

-modules 
--searchPage 
---config 
----routes.php 
---controllers 
---views 
---models 

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

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Welcome extends MX_Controller { 

    public function showMessage() 
    { 
     $this->load->view('test'); 
    } 
} 
?> 

Версия: Wiredesignz 5,5 и CodeIgniter 3.0.3

Но это не работает. Может кто-нибудь объяснить, почему это не работает?

Я нашел решение:

Я поместил этот код в приложении/Config/routes.php

$modules_path = APPPATH.'modules/';  
$modules = scandir($modules_path); 

foreach($modules as $module) 
{ 
    if($module === '.' || $module === '..') continue; 
    if(is_dir($modules_path) . '/' . $module) 
    { 
     $routes_path = $modules_path . $module . '/config/routes.php'; 
     if(file_exists($routes_path)) 
     { 
      require($routes_path); 
     } 
     else 
     { 
      continue; 
     } 
    } 
} 

И внутри модулей/searchPage/Config/routes.php

$route['searchPage'] = 'searchPage/Welcome/showMessage'; 
+0

как вы идете вы пытались какие-либо ответы – user4419336

+0

@ wolfgang1983 Я добавил решение в моем сообщении – da1lbi3

+1

@ da1lbi3, но почему вы не ставите этот маршрут '$ route ['searchPage'] = 'searchPage/Welcome/showMessage';' внутри основного (и должен быть единственным каталогом конфигурации) маршрута файл, как я предлагаю в своем ответе? – David

ответ

0

Ваша структура неудовлетворительно

-modules 
--searchPage 
---config 
----routes.php 
---controllers 
---views 
---models 

он должен выглядеть следующим образом

-config 
    --routes.php 
    -modules 
    --searchPage 
    ---controllers 
    ---views 
    ---models 

вы можете иметь только одну папку конфигурации и должен быть вне папки модулей, так же, как и все PHP файлы конфигурации

0

Если ваш модуль называется searchPage

$route['searchPage'] = 'searchPage/welcome/showMessage'; 
$route['some_name'] = 'module/controller/function'; 

Пример Справочник

modules > 

modules > searchPage > 

modules > searchPage > controllers > 

modules > searchPage > controllers > Welcome.php 

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

С вашей конфигурации и маршрутов в ваших модулей папку, лучше использовать один в главном application > config > routes.php и application > config > config.php

Смежные вопросы