qobo / project-template-cakephp
新 CakePHP 项目的模板
Requires
- aws/aws-sdk-php: ^3.52
- brainmaestro/composer-git-hooks: ^2.4
- cakedc/users: ~8.5.0
- cakephp/cakephp: ^3.8
- cakephp/plugin-installer: ^1.1
- composer/composer: ^1.7
- dereuromark/cakephp-databaselog: ^2.1
- dereuromark/cakephp-whoops: ^0.1.2
- lasserafn/php-initial-avatar-generator: ^4.0
- pelago/emogrifier: ^1.2
- pyrech/composer-changelogs: ^1.4
- qobo/cakephp-csv-migrations: ^38.0
- qobo/cakephp-groups: ^11.0
- qobo/cakephp-menu: ^16.0
- qobo/cakephp-roles-capabilities: ^v18.0
- qobo/cakephp-search: ^22.0
- qobo/cakephp-utils: ^13.0
- qobo/qobo-robo: ^2.0
- qobo/qobo-robo-cakephp: ^2.0
Requires (Dev)
- qobo/cakephp-composer-dev: ^v1.1
Suggests
- markstory/asset_compress: An asset compression plugin which provides file concatenation and a flexible filter system for preprocessing and minification.
- dev-master
- v51.4.0
- v51.3.0
- v51.2.0
- v51.1.0
- v51.0.1
- v51.0.0
- v50.3.0
- v50.2.3
- v50.2.2
- v50.2.1
- v50.2.0
- v50.1.2
- v50.1.1
- v50.1.0
- v50.0.0
- v49.0.0
- v48.6.0
- v48.5.0
- v48.4.0
- v48.3.0
- v48.2.0
- v48.1.1
- v48.1.0
- v48.0.0
- v47.5.x-dev
- v47.5.1
- v47.5.0
- v47.4.2
- v47.4.1
- v47.4.0
- v47.3.1
- v47.3.0
- v47.2.2
- v47.2.1
- v47.2.0
- v47.1.1
- v47.1.0
- v47.0.0
- v46.1.2
- v46.1.1
- v46.1.0
- v46.0.0
- v45.4.4
- v45.4.3
- v45.4.2
- v45.4.1
- v45.4.0
- v45.3.1
- v45.3.0
- v45.2.1
- v45.2.0
- v45.1.0
- v45.0.0
- v44.0.2
- v44.0.1
- v44.0.0
- v43.2.1
- v43.2.0
- v43.1.1
- v43.1.0
- v43.0.5
- v43.0.4
- v43.0.3
- v43.0.2
- v43.0.1
- v43.0.0
- v42.0.2
- v42.0.1
- v42.0.0
- v41.5.0
- v41.4.0
- v41.3.0
- v41.2.0
- v41.1.0
- v41.0.0
- v40.4.2
- v40.4.1
- v40.4.0
- v40.3.3
- v40.3.2
- v40.3.1
- v40.3.0
- v40.2.0
- v40.1.0
- v40.0.1
- v40.0.0
- v39.15.1
- v39.15.0
- v39.14.0
- v39.13.0
- v39.12.0
- v39.11.0
- v39.10.1
- v39.10.0
- v39.9.3
- v39.9.2
- v39.9.1
- v39.9.0
- v39.8.3
- v39.8.2
- v39.8.1
- v39.8.0
- v39.7.0
- v39.6.0
- v39.5.1
- v39.5.0
- v39.4.0
- v39.3.0
- v39.2.2
- v39.2.1
- v39.2.0
- v39.1.0
- v39.0.0
- v38.2.7
- v38.2.6
- v38.2.5
- v38.2.4
- v38.2.3
- v38.2.2
- v38.2.1
- v38.2.0
- v38.1.0
- v38.0.8
- v38.0.7
- v38.0.6
- v38.0.5
- v38.0.4
- v38.0.3
- v38.0.2
- v38.0.1
- v38.0.0
- v37.3.0
- v37.2.0
- v37.1.1
- v37.1.0
- v37.0.9
- v37.0.8
- v37.0.7
- v37.0.6
- v37.0.5
- v37.0.4
- v37.0.3
- v37.0.2
- v37.0.1
- v37.0.0
- v36.3.0
- v36.2.0
- v36.1.0
- v36.0.0
- v35.5.1
- v35.5.0
- v35.4.1
- v35.4.0
- v35.3.0
- v35.2.1
- v35.2.0
- v35.1.2
- v35.1.1
- v35.1.0
- v35.0.0
- v34.1.1
- v34.1.0
- v34.0.2
- v34.0.1
- v34.0.0
- v33.0.3
- v33.0.2
- v33.0.1
- v33.0.0
- v32.13.3
- v32.13.2
- v32.13.1
- v32.13.0
- v32.12.2
- v32.12.1
- v32.12.0
- v32.11.0
- v32.10.2
- v32.10.1
- v32.10.0
- v32.9.0
- v32.8.3
- v32.8.2
- v32.8.1
- v32.8.0
- v32.7.1
- v32.7.0
- v32.6.3
- v32.6.2
- v32.6.1
- v32.6.0
- v32.5.1
- v32.5.0
- v32.4.1
- v32.4.0
- v32.3.0
- v32.2.3
- v32.2.2
- v32.2.1
- v32.2.0
- v32.1.2
- v32.1.1
- v32.1.0
- v32.0.0
- v31.4.3
- v31.4.2
- v31.4.1
- v31.4.0
- v31.3.0
- v31.2.5
- v31.2.4
- v31.2.3
- v31.2.2
- v31.2.1
- v31.2.0
- v31.1.1
- v31.1.0
- v31.0.0
- v30.1.0
- v30.0.0
- v29.0.3
- v29.0.2
- v29.0.1
- v29.0.0
- v28.4.0
- v28.3.6
- v28.3.5
- v28.3.4
- v28.3.3
- v28.3.2
- v28.3.1
- v28.3.0
- v28.2.1
- v28.2.0
- v28.1.2
- v28.1.1
- v28.1.0
- v28.0.4
- v28.0.3
- v28.0.2
- v28.0.1
- v28.0.0
- v27.1.1
- v27.1.0
- v27.0.1
- v27.0.0
- v26.0.3
- v26.0.2
- v26.0.1
- v26.0.0
- v25.0.1
- v25.0.0
- v24.1.0
- v24.0.6
- v24.0.5
- v24.0.4
- v24.0.3
- v24.0.2
- v24.0.1
- v24.0.0
- v23.0.1
- v23.0.0
- v22.1.0
- v22.0.0
- v21.2.0
- v21.1.2
- v21.1.1
- v21.1.0
- v21.0.1
- v21.0.0
- v20.2.1
- v20.2.0
- v20.1.1
- v20.1.0
- v20.0.2
- v20.0.1
- v20.0.0
- v19.1.5
- v19.1.4
- v19.1.3
- v19.1.2
- v19.1.1
- v19.1.0
- v19.0.0
- v18.0.0
- v17.0.5
- v17.0.4
- v17.0.3
- v17.0.2
- v17.0.1
- v17.0.0
- v16.2.1
- v16.2.0
- v16.1.0
- v16.0.0
- v15.1.0
- v15.0.1
- v15.0.0
- v14.1.4
- v14.1.3
- v14.1.2
- v14.1.1
- v14.1.0
- v14.0.1
- v14.0.0
- v13.1.0
- v13.0.2
- v13.0.1
- v13.0.0
- v12.0.0
- v11.9.3
- v11.9.2
- v11.9.1
- v11.9.0
- v11.8.0
- v11.7.0
- v11.6.0
- v11.5.0
- v11.4.1
- v11.4.0
- v11.3.3
- v11.3.2
- v11.3.1
- v11.3.0
- v11.2.1
- v11.2.0
- v11.1.0
- v11.0.0
- v10.0.4
- v10.0.3
- v10.0.2
- v10.0.1
- v10.0.0
- v9.0.0
- v8.2.0
- v8.1.0
- v8.0.0
- v7.0.0
- v6.0.1
- v6.0.0
- v5.7.1
- v5.7.0
- v5.6.1
- v5.6.0
- v5.5.0
- v5.4.1
- v5.4.0
- v5.3.2
- v5.3.1
- v5.3.0
- v5.2.2
- v5.2.1
- v5.2.0
- v5.1.0
- v5.0.2
- v5.0.1
- v5.0.0
- v4.0.1
- v4.0.0
- v3.2.1
- v3.2.0
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.1
- v3.0.0
- v2.2.0
- v2.1.9
- v2.1.8
- v2.1.7
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-dependabot/add-v2-config-file
- dev-task-17472-Update-help-tooltip
- dev-task-17518-more-phpcs-rules
- dev-task-16680-Color-picker
- dev-generate-module-fix
- dev-task-17130-settings-search
- dev-cakephp-v38
- dev-task-11513-escape-job-options
- dev-task-16681-limit-number-of-files-to-be-uploads
- dev-task-16411-update-settings
- dev-task-16582-Avoid-XSS
- dev-task-16473-fix-labels-for-search
- dev-task-16595-improve-user-profile-links
- dev-task-15955-image-thumbnails-in-datatables
- dev-task-16415-switch-to-module-classes-2
- dev-composer-updates
- dev-task-3321-make-api-error-messages-user-friendly
- dev-task-15751
- dev-task-15480-helper-tooltip
- dev-task-15909-schedule-jobs-menu
- dev-task-15019
- dev-task-15882-translate-help-option-in-fields-json
- dev-task-15845-add-search-example-criteria-and-update-criteria-field-values
- dev-task-14136-update-search-plugin
- dev-task-15637-link-permissions
- dev-task-15310-settings-value-length
- dev-task-14872-dashboard-sequence-2
- dev-task-13039-basic-admin-settings-2
- dev-task-11957-Access-log-read-poc
- dev-add-id-to-lookup-by-default
- dev-check-correct-batch-flag
- dev-task-2555-soft-delete
This package is auto-updated.
Last update: 2021-08-23 06:09:35 UTC
README
关于
这是一个新 CakePHP 项目的模板。
安装
有两种方式可以安装并开始使用此项目模板。
Composer
您可以使用 composer 从此模板创建新项目。
composer create-project qobo/project-template-cakephp example.com cd example.com ./bin/build app:install DB_NAME="app",PROJECT_NAME="My Project",PROJECT_VERSION="v1.0.0"
Git
或者,如果您想能够将项目更新到模板的最新版本,您可以使用 git 安装模板。
mkdir example.com cd example.com git init # Pull the latest version from https://github.com/QoboLtd/project-template-cakephp/releases git pull git@github.com:QoboLtd/project-template-cakephp.git vX.Y.Z composer update ./bin/build app:install DB_NAME="app",PROJECT_NAME="My Project",PROJECT_VERSION="v1.0.0" # Add your own remote repository git remote add origin git@github.com/USER/REPO # Push git push origin master
使用上述方法,您将拥有模板开发的完整历史记录。现在您可以开始自己的开发,并在未来的任何时间升级到最新模板。
更新
如果您使用 git 安装了项目模板,您可以使用以下方法轻松将应用程序升级到最新模板
cd exmample.com # Make sure you are on the master branch and have a clean and up-to-date workspace git checkout master git pull origin master # Create a new branch git checkout -b project-template-update # Pull the latest version from https://github.com/QoboLtd/project-template-cakephp/releases git pull git@github.com:QoboLtd/project-template-cakephp.git vX.Y.Z composer update ./bin/build app:update # Check for conflicts, resolve if any, commit, and then push git push origin project-template-update # Create a pull request, review, and merge
使用
PHP
现在您已经安装了项目模板,在开始修改之前请检查它是否工作正常。启动 PHP 网络服务器
./bin/phpserv
或在备用端口上运行它
./bin/phpserv -H localhost -p 9000
在浏览器中导航到 http://localhost:8000。您应该看到登录页面。如果看到了,所有部分都已就位。
现在您可以像平常一样开发您的 PHP 项目,但有以下优势
- 支持 PHP 内置网络服务器
- 使用
.env
文件按环境进行配置,该文件被 git 忽略 - 集成强大的构建系统(Robo)
- Composer 与
vendor/
文件夹集成,并添加到.gitignore
中 - PHPUnit 与
tests/
文件夹和示例单元测试集成 - 默认值合理,遵循最佳实践 - favicon.ico、robots.txt、MySQL 备份、Nginx 配置、GPL 等。
例如,您可以通过修改包含在 build/
文件夹中的 Robo 文件来轻松自动化应用程序的构建过程。运行以下命令来查看可用的目标
./bin/build
如您所见,已经为应用程序的构建过程预留了一些占位符。默认情况下,建议您有以下这些
app:install
- 用于应用程序的安装过程app:update
- 用于已安装应用程序的更新过程app:remove
- 用于应用程序的删除过程和清理
当然,您可以添加自己的,移除这些或以任何方式更改它们。查看Robo文档以获取有关如何使用这些目标和传递运行时配置参数的更多信息。
JavaScript
模板使用VueJS作为主要的JavaScript库。我们正在逐渐放弃jQuery代码库,将所有内容转移到Vue组件中。
为了运行代码的JavaScript部分,特别是如果您想检查模块搜索的工作方式,您必须首先编译JS组件。
项目将依赖于LTS版本的NodeJS。您可以按照此说明在您的机器上设置Node和npm。
您必须使用此命令安装package.json
中所需的所有模块
npm install
在project-template-cakephp
中,我们提供了package-lock.json
,以确保代码库针对这些版本进行了适当的测试。
在package.json
中,您可以找到运行以下操作的主要脚本命令
npm run build:dev
- 运行HRM版本的JavaScriptnpm run build:prod
- 在webroot/dist/
目录中编译生产就绪代码。npm run watch
- 使用webpack的watch
选项保持开发版本的代码在webroot/dist
中。这对于检查代码在PHP应用程序中的外观非常有用。npm run lint
- 运行ESLint检查npm run test
- 使用jest
运行单元测试。
测试
PHPUnit和PHP CodeSniffer
运行PHPUnit和PHP CodeSniffer最快、最简单的方法是通过composer脚本
./bin/composer test
或者,您可以通过代码覆盖率报告运行测试
./bin/composer test-coverage
HTML格式的代码覆盖率报告将放置在./build/test-coverage/
文件夹中。
Travis CI
持续集成是一种工具,它帮助您在代码库上(提交、合并等)进行任何更改时运行您的测试。您可以使用许多工具,但project-template-cakephp提供了一个与Travis CI的示例集成。
查看.travis.yml
文件,它描述了环境矩阵、项目安装步骤以及运行测试套件的方式。对于基于project-template-cakephp的真实项目,您可能希望从文件中删除示例测试。
示例
project-template-cakephp提供了一些关于如何编写和组织单元测试的示例。请查看tests/
文件夹。现在您没有理由不测试您的应用程序了!
已知问题
MySQL 5.7 / MariaDB 10
使用MySQL 5.7或MariaDB 10运行此项目模板有时会导致SQL查询出现致命错误。我们正在寻找更好的方法来捕获和修复这些问题,但如果您在环境中遇到这些问题,请调整您的MySQL / MariaDB配置以使用SQL模式。
可以通过以下方式在etc/my.cnf
文件中设置SQL模式
[mysqld]
sql-mode="NO_ZERO_IN_DATE,NO_ZERO_DATE"
或者,也可以通过SQL查询进行设置,如下所示
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
有关更多信息,请参阅此StackOverflow线程。
以下是一些问题示例及其修复方法。
Error: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime
value: '2017-11-30T13:30:48+02:00' for column 'timestamp' at row 1
如果您遇到上述错误(通常在Fedora 27及以上版本中看到),请确保您的SQL模式包含"NO_ZERO_IN_DATE,NO_ZERO_DATE"。
Error: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of
SELECT list is not in GROUP BY clause and contains nonaggregated column ...
如果您遇到上述错误(通常在Ubuntu 16.05中看到),请确保您的SQL模式不包含"ONLY_FULL_GROUP_BY"。