xxperez/codeigniter4modular

CodeIgniter4模块化启动应用

1.1.6 2022-03-28 14:58 UTC

This package is auto-updated.

Last update: 2024-08-28 20:45:10 UTC


README

什么是CodeIgniter模块化?

CodeIgniter是一个轻量、快速、灵活和安全的PHP全栈Web框架。更多信息可以在官方网站找到。

"模块化结构"允许将每个模块与其他模块分离,每个模块都有自己的控制器、数据库、过滤器、库、语言、模型、路由、验证和视图。

此存储库包含一个可由composer安装的应用程序启动器,其中包含jQuery、Bootstrap4以及完整工作的登录/注册模块示例。它是由开发存储库构建的。

有关版本4的计划更多信息可以在论坛上的公告中找到。

与该框架版本对应的用户指南可以在这里找到。

安装和更新

转到可浏览的目录(例如:c:\xampp\htdocs)

composer create-project xxperez/codeigniter4modular

然后

cd codeigniter4modular

更新

每当框架有新版本发布时

composer update

更新时,检查发布说明以查看是否需要将某些更改应用于您的app文件夹。受影响的文件可以从vendor/codeigniter4/framework/app复制或合并。

设置

转到Codeigniter4Modular目录。

cd codeigniter4modular

env复制到.env

copy env .env

编辑.env,并针对您的应用程序进行调整,特别是baseURL和默认数据库设置

app.baseURL = 'https:///codeigniter4modular/public'

database.default.hostname = localhost
database.default.database = database
database.default.username = username
database.default.password = password
database.default.DBDriver = MySQLi
database.default.port = 3306

在数据库配置完成后,运行迁移以确保创建users表

php spark migrate -all

模块配置

将以下行添加到您的.env中,并根据需要调整。示例文件有英文和西班牙语翻译

#--------------------------------------------------------------------
# LANGUAGE
#--------------------------------------------------------------------
app.defaultLocale = 'en'
app.supportedLocales = ['en','es','fr','de']
app.negotiateLocale = true
app.appTimezone = 'America/Chicago'

现在,您可以测试应用程序,浏览安装的目录,在主页面上点击“登录”。

https:///codeigniter4modular

更多关于模块配置的信息

所有模块都将位于/Modules下,但可以分配到其他位置。当您创建模块时,编辑/app/Config/Autoload.php并将您的模块添加到PSR4,以便能够找到。

	public $psr4 = [
            APP_NAMESPACE => APPPATH, // For custom app namespace
            'Config'      => APPPATH . 'Config',
            APP_NAMESPACE.'\Controllers' => APPPATH.'Controllers',
            'Dashboard' => APPPATH . '../Modules\Dashboard' ,
            'Users' => APPPATH . '../Modules\Users' ,
	];

您在模块内声明的每个过滤器都必须在/app/Config/Filters.php中别名为能够在规则中使用。

	public $aliases = [
		'csrf'     => \CodeIgniter\Filters\CSRF::class,
		'toolbar'  => \CodeIgniter\Filters\DebugToolbar::class,
		'honeypot' => \CodeIgniter\Filters\Honeypot::class,
		'auth' => \Users\Filters\AuthFilter::class,
		'noauth' => \Users\Filters\NoAuthFilter::class,
	];

您在模块内声明的每个验证都必须在/app/Config/Validation.php中的ruleSets变量中设置。

	public $ruleSets = [
		\CodeIgniter\Validation\Rules::class,
		\CodeIgniter\Validation\FormatRules::class,
		\CodeIgniter\Validation\FileRules::class,
		\CodeIgniter\Validation\CreditCardRules::class,
		\Users\Validation\UserRules::class,
	];

模块库

模块内的库用于定义使控制器轻量化的函数。如果您希望在一个模块库中使用验证,您将需要直接访问请求和验证对象。

        $request = \Config\Services::request();
        $validation = \Config\Services::validation();
        $validation->setRules($rules, $errors);
        $validation->withRequest($request)->run();
        $validationErrors = $validation->getErrors();

模块创建

要创建新的模块,您可以从基本目录使用spark module:create选项。例如,要创建名为“Customers”的模块

php spark module:create Customers

模块创建选项:-f ModuleDir(除App/Modules之外的其他位置)-c FCLMVO(仅创建con[F]ig、[C]ontroller、[L]ibrary、[M]odel、[V]iew、[O]ther dirs)

php spark module:create Customers -c FCMV

与index.php相关的重大更改

index.php不再位于项目根目录!它已被移动到public文件夹中,以提高安全性和组件分离。

这意味着您应该配置您的Web服务器“指向”您项目的public文件夹,而不是项目根目录。更好的做法是配置一个虚拟主机将其指向那里。较差的做法是将您的Web服务器指向项目根目录并期望进入public/...,因为您的逻辑和框架的其他部分都被暴露了。

阅读用户指南以更好地了解CI4的工作原理!目前用户指南的更新和部署有些不顺畅,但我们正在努力解决这个问题!

仓库管理

我们在主仓库中使用GitHub问题跟踪BUG,并跟踪已批准的开发工作包。我们使用我们的论坛提供支持和讨论功能请求。

此仓库是一个“分发”仓库,由我们的发布准备脚本构建。与此相关的问题可以在我们的论坛上提出,或者作为主仓库的问题。

服务器要求

需要PHP版本7.2或更高版本,并安装以下扩展

  • intl
  • 如果计划使用HTTP\CURLRequest库,则需要libcurl

此外,请确保以下扩展已在您的PHP中启用

  • json(默认启用 - 不要关闭它)
  • mbstring
  • mysqlnd
  • xml(默认启用 - 不要关闭它)