我已经用about、products等控制器创建了我的网站。这给了我example.com/about/etc。
如何创建具有相同控制器名称的管理部分,如example.com/admin/about或example.com/admin/products?
如何组织控制器?
还有两个选项来补充WebweaverD答案。
- 使用模块化分离
- 创建第二个应用程序文件夹和索引文件,负责管理,将它们连接到同一系统文件夹
第二个选项一旦设置好就很容易管理。虽然有一些变化,但我发现下面的结构是最方便的。
mykewlwebsite.com
apps/
frontend/
app/ frontend codeigniter application folder
public/
index.php
assets/ frontend js, css, images
backend
app/ backend codeigniter application folder
public/
index.php
assets/ backend js, css, images
config/
database.php
constants.php
system/ codeigniter system folder
database.php文件包含CodeIgniter的config/database.php
中的代码,并为项目的所有应用程序共享-只需删除所有代码并将require_once('../../../../config/database.php');
添加到config/database.php
index.php公用文件夹中的文件有两个重要变量$system_path
和$application_folder
,请将它们更改为
$system_path = '../../../system/codeigniter';
$application_folder = '../app';
constants.php文件可以有一些常量,如index.php
文件中的ENVIRONMENT
常量和其他一些常量。只需从index.php
文件中选择require_once()
。
尽管有利弊。
PROS
对于那些在本地主机上开发并通过FTP或其他系统部署到服务器的人来说,只需上传一个文件夹apps
并覆盖目标文件夹,而不用担心覆盖database.php
设置(我相信大多数人的设置与本地不同)。
再添加一个应用程序很容易——只需复制一个现有的应用程序即可。您可以添加任意数量的应用程序——api、ajax、用户机柜等。
CONS
如果您有一个域mykewlwebsite.com
,并且能够向其中添加子域,则可以使用此结构,因此您只需为每个域配置主文件夹:
mykewlwebsite.com:路径/to/mykewlweb site.com/apps/frontend/public/
admin.mykewwebsite.com:路径/to/mykewlwebsite.com/apps/backend/public/
api.mykewwebsite.com:路径/to/mykewlwebsite.com/apps/api/public/
这里有几个选项:
1) 创建子文件夹-将它们放在controllers目录(application/controllers/admin/products.php)中名为admin的文件夹中
这里有一个警告,你只能深入一个文件夹,否则代码点火器会被打乱。此外,它将首先使用一级控制器/方法,因此要小心命名冲突-例如,如果你有一个带有products方法的管理控制器,它将在管理目录中查找products控制器之前被调用。(当转到example.com/admin/products时)
2) 使用路由文件-如果只是你担心的URL,你可以随意调用控制器,并使用application/config/ROUTES将这些路径重定向到你想要的控制器,如下所示:
控制器名称:admin_products.php
路由文件:
$route['admin/products'] = "admin_products";
3) USE A MASTER CONTROLLER FOR ALL-最终选项是有一个单独的管理控制器,并在其中使用命名方法,因此例如,您有一个admin.php控制器,其中有一个products方法,然后由admin/products uri调用它(这可能会变得混乱,尽管在大型应用程序/站点中-不推荐)
希望我已经为你解释过了,如果你需要任何澄清,请询问,我会尽力详细说明。