xxperez / codeigniter4modular
CodeIgniter4模块化启动应用
Requires
- php: >=7.2
- codeigniter4/framework: ^4
Requires (Dev)
- fzaninotto/faker: ^1.9@dev
- mikey179/vfsstream: 1.6.*
- phpunit/phpunit: ^8.5
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'
现在,您可以测试应用程序,浏览安装的目录,在主页面上点击“登录”。
更多关于模块配置的信息
所有模块都将位于/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或更高版本,并安装以下扩展
此外,请确保以下扩展已在您的PHP中启用