CakePHP 框架应用程序骨架

安装: 457

依赖: 0

建议者: 0

安全性: 0

星标: 8

关注者: 7

分支: 7

开放问题: 0

类型:项目

1.11.3 2019-11-30 22:05 UTC

README

Build Status License Version Total Downloads

这是为使用CakePHP 3.x 创建应用程序而创建的官方骨架的分支。它应该包含大部分必要的功能。

安装

  1. 下载Composer 或更新 composer self-update
  2. 运行 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插件的列表

以下是一个已安装并预先配置的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.defaultconfig/.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 框架的子集。但是,您可以用任何其他库或自定义样式替换它。