josegonzalez / app
CakePHP 框架应用程序骨架
Requires
- php: >=7.0
- ext-apcu: *
- ext-intl: *
- ext-mbstring: *
- ext-pcntl: *
- ext-pdo_mysql: *
- ext-pdo_pgsql: *
- ext-pdo_sqlite: *
- ext-redis: *
- cakephp/cakephp: 3.8.*
- cakephp/migrations: ^2.0.0
- cakephp/plugin-installer: ^1.0
- friendsofcake/bootstrap-ui: 1.*
- friendsofcake/crud: ^5.0
- friendsofcake/crud-view: 0.*
- friendsofcake/search: 5.*
- josegonzalez/cakephp-queuesadilla: 0.6.*
- josegonzalez/cakephp-upload: 4.*
- josegonzalez/cakephp-users: 0.*
- josegonzalez/dotenv: 3.*
- josegonzalez/php-error-handlers: 0.*
- josegonzalez/queuesadilla: *
- markstory/asset_compress: 3.*
- mobiledetect/mobiledetectlib: 2.*
Requires (Dev)
- cakephp/bake: ^1.9.0
- cakephp/cakephp-codesniffer: ^3.0
- cakephp/debug_kit: ^3.17.0
- josegonzalez/dotenv: 3.*
- phpunit/phpunit: ^5|^6
- psy/psysh: @stable
Suggests
- dereuromark/cakephp-ide-helper: After baking your code, this keeps your annotations in sync with the code evolving from there on for maximum IDE and PHPStan compatibility.
- markstory/asset_compress: An asset compression plugin which provides file concatenation and a flexible filter system for preprocessing and minification.
This package is auto-updated.
Last update: 2024-09-19 23:45:39 UTC
README
这是为使用CakePHP 3.x 创建应用程序而创建的官方骨架的分支。它应该包含大部分必要的功能。
安装
- 下载Composer 或更新
composer self-update
。 - 运行
php composer.phar create-project --prefer-dist josegonzalez/app [app_name]
。
如果您全局安装了Composer,运行
composer create-project --prefer-dist josegonzalez/app [app_name]
如果您想使用自定义的应用目录名(例如 /myapp/
)
composer create-project --prefer-dist josegonzalez/app myapp
现在您可以使用机器的Web服务器查看默认主页,或者通过以下命令启动内置Web服务器
bin/cake server -p 8765
然后访问 http://localhost:8765
来查看欢迎页。
更新
由于这个骨架是您应用程序的起点,并且各种文件会根据您的需求进行修改,因此无法提供自动升级,您必须手动进行任何更新。
功能
安装的包和插件
以下是一个已安装并预先配置的CakePHP插件的列表
- friendsofcake/bootstrap-ui
- friendsofcake/crud-users
- friendsofcake/crud-view
- friendsofcake/crud
- friendsofcake/search
- josegonzalez/cakephp-users
- josegonzalez/cakephp-upload
- josegonzalez/cakephp-queuesadilla
- markstory/asset_compress
以下是一个已安装并预先配置的PHP包的列表
配置
默认情况下,此骨架将使用josegonzalez/php-dotenv从以下文件加载配置
config/app.php
config/.env
- 如果此文件不存在,则使用
config/.env.default
- 如果此文件不存在,则使用
对于在不同环境中不更改的“全局”配置,您应该修改 config/app.php
。由于该文件默认被忽略,您还应该努力将合理的默认值添加到 app.default.php
。
对于在不同环境中变化的配置,您应该修改 config/.env
文件。这是一个兼容bash的文件,包含 export KEY_1=VALUE
语句。键名中的下划线用于将键展开成嵌套数组,类似于 \Cake\Utility\Hash::expand()
的工作方式。
为了方便起见,某些变量可以通过 config/env.php
文件自动重映射。您可以随意将其他路径添加到该文件中。
资源压缩
markstory/asset_compress 插件默认安装并启用。它由CrudView插件使用,但尚未与默认布局集成。
CRUD默认值
默认情况下,crud 插件已启用并具有所有已知自定义设置。只需创建一个控制器即可在默认RESTful API模式下启用所有CRUD操作。
请注意,我们还将默认分页排序设置为表的 primaryKey
(如果有单个 primaryKey
字段)。
CRUD用户默认值
CrudUsers
插件已预先配置与 Users
插件一起使用。骨架应用程序中已预先创建迁移,可以运行以初始化插件。相关插件的迁移也将通过
composer run-script compile
查看 Users 插件文档 获取更多信息。
CRUD视图默认值
Crud View 已在 Application::beforeFilter
中启用,针对所有以 admin 前缀的操作。您还可以通过将控制器的 $isAdmin
属性设置为 true
来自动为控制器启用它。
请注意,scaffold.brand
已设置为常量 APP_NAME
,您可以在您的 config/.env.default
或 config/.env
文件中修改它。
自定义Bake
现在存在一个 config/bake_cli.php
文件。此文件应包含所有与 bake 相关的事件处理器。它用于加快重新烘焙过程,这样我们就不需要重新添加自定义设置。
例如,以下事件处理器将 Josegonzalez/Upload.Upload
插件添加到 Users.photo
字段
EventManager::instance()->on('Bake.beforeRender.Model.table', function (Event $event) { $view = $event->subject(); $name = Hash::get($view->viewVars, 'name', null); if ($name == 'Users') { $behaviors = Hash::normalize(Hash::get($view->viewVars, 'behaviors', [])); $behaviors['Josegonzalez/Upload.Upload'] = ['photo' => []]; $view->set('behaviors', $behaviors); } });
有关更多详细信息,请参阅 bake 文档。
错误处理
通过 josegonzalez/php-error-handers 包设置将错误发送到外部错误跟踪服务的自定义错误处理器。要配置一个,您可以在您的 config/app.php
中添加以下键配置
[ 'Error' => [ 'config' => [ 'handlers' => [ // configuring the BugsnagHandler via an env var 'BugsnagHandler' => [ 'apiKey' => env('BUGSNAG_APIKEY', null) ], ], ], ], ];
然后,只需在您的 config/.env
或您的平台配置管理工具中设置适当的环境变量。
Heroku支持
Heroku 和其他 PaaS 软件默认支持。如果您要部署到 Heroku,只需运行以下命令,假设您有正确的远程配置,则一切应该正常运行
git push heroku master
默认情况下,将运行核心应用程序的迁移。如果您想运行插件的迁移,您需要修改您的 composer.json
中的 scripts.compile
键。
队列
通过 Queuesadilla php 包提供队列支持,一个 CakePHP 插件 提供集成。
您可以从 jobs
mysql 表启动队列。
# ensure everything is migrated and the jobs table exists bin/cake migrations migrate # default queue bin/cake queuesadilla # also the default queue bin/cake queuesadilla --queue default # some other queue bin/cake queuesadilla --queue some-other-default # use a different engine bin/cake queuesadilla --engine redis
您可以在 config/app.php
中的 Queuesadilla.engine
数组下自定义引擎配置。目前,它默认与您的应用程序的 mysql 数据库配置兼容。
需要排队处理某些任务吗?
// assuming mysql engine use josegonzalez\Queuesadilla\Engine\MysqlEngine; use josegonzalez\Queuesadilla\Queue; // get the engine config: $config = Configure::read('Queuesadilla.engine'); // instantiate the things $engine = new MysqlEngine($config); $queue = new Queue($engine); // a function in the global scope function some_job($job) { var_dump($job->data()); } $queue->push('some_job', [ 'id' => 7, 'message' => 'hi' ]);
有关定义作业的更多信息,请参阅 此处。
布局
应用程序骨架默认使用 Foundation (v5) CSS 框架的子集。但是,您可以用任何其他库或自定义样式替换它。