我希望每个模块都有一个'全局链接',如下所示:
在 application / config / routes.php
内$route['search'] = 'searchPage';
如果用户在url中输入搜索需要转到模块searchPage,那么模块内部的路径就会出现。或者那就是我的计划,我想要在该模块内部进行默认路由。
在 modules / searchPage / config / routes.php
内$route['searchPage'] = 'Welcome/showMessage';
使用showMessage函数转到Welcome控制器。
-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
但这不起作用。有人可以解释为什么这不起作用吗?
我找到了解决方案:
我已将此代码放在application / 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;
}
}
}
在modules / searchPage / config / routes.php里面
$route['searchPage'] = 'searchPage/Welcome/showMessage';
答案 0 :(得分:0)
你的结构表现不佳
-modules
--searchPage
---config
----routes.php
---controllers
---views
---models
它看起来应该是这样的
-config
--routes.php
-modules
--searchPage
---controllers
---views
---models
你只能有一个配置文件夹,必须在modules文件夹之外,与配置的所有php文件相同
答案 1 :(得分:0)
如果您的模块名为searchPage
$route['searchPage'] = 'searchPage/welcome/showMessage';
$route['some_name'] = 'module/controller/function';
目录示例
modules >
modules > searchPage >
modules > searchPage > controllers >
modules > searchPage > controllers > Welcome.php
如果您没有使用htaccess删除index.php,则可能需要在您的网址中包含index.php。
使用您的模块文件夹中的配置和路由,最好使用主application > config > routes.php
和application > config > config.php