我已经使用about、products 等控制器创建了我的网站……这给了我example.com/about/ 等。
如何创建具有相同控制器名称的管理部分,例如 example.com/admin/about 或 example.com/admin/products ?
如何组织我的控制器?
我已经使用about、products 等控制器创建了我的网站……这给了我example.com/about/ 等。
如何创建具有相同控制器名称的管理部分,例如 example.com/admin/about 或 example.com/admin/products ?
如何组织我的控制器?
补充WebweaverD答案的另外2 个选项。
设置后,第二个选项非常容易管理。有一些变化,但我发现下面的结构是最方便的。
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文件可以包含一些常量ENVIRONMENT
,例如文件中的常量index.php
和其他常量。只是require_once()
从index.php
文件中。
虽然有利有弊。
优点
对于那些在 localhost 上开发并通过 FTP 或其他系统部署到服务器的人来说,他们可以简单地上传一个文件夹 -apps
并覆盖目标文件夹而不必担心覆盖database.php
设置(我相信你们中的大多数人的设置与本地不同) )。
添加一个应用程序很容易 - 只需复制现有的一个。您可以根据需要添加任意数量的应用程序 - api、ajax、用户文件柜等。
缺点
如果您有一个域mykewlwebsite.com
并且能够向其中添加子域,则可以使用此结构,因此您只需为每个域配置主文件夹:
mykewlwebsite.com:路径/到/mykewlwebsite.com/apps/frontend/public/
admin.mykewlwebsite.com:路径/to/mykewlwebsite.com/apps/backend/public/
api.mykewlwebsite.com:路径/到/mykewlwebsite.com/apps/api/public/
你有几个选择:
1)创建一个子文件夹 - 将它们放在控制器目录中名为 admin 的文件夹中(在 application/contollers/admin/products.php 中)
这里有一个警告,你只能深入一个文件夹,否则 codeigniter 会感到不安。此外,它将首先使用第一级控制器/方法,因此请注意命名冲突 - 例如,如果您有一个带有产品方法的管理控制器,它将在它在管理目录中查找产品控制器之前被调用。(访问 example.com/admin/products 时)
2)使用路由文件- 如果只是您担心的 url,您可以随意调用控制器,并使用 application/config/routes 将这些路径重定向到您想要的控制器,如下所示:
控制器名称:admin_products.php
路线文件:
$route['admin/products'] = "admin_products";
3)对所有人使用主控制器- 最后的选择是拥有一个管理控制器并在其中使用命名方法,例如,您有 admin.php 控制器,其中包含产品方法,然后由 admin/products 调用uri(虽然在大型应用程序/站点中这可能会变得混乱 - 不推荐)
希望我已经为您解释了这一点,如果您需要任何澄清,请询问,我会尽力详细说明。