Giter VIP home page Giter VIP logo

cakeadvent-2016's Introduction

A CakePHP Application Skeleton

Build Status License Version Total Downloads

A fork of the official skeleton for creating applications with CakePHP 3.x. It should be more or less "batteries included"

Installation

  1. Download Composer or update composer self-update.
  2. Run php composer.phar create-project --prefer-dist josegonzalez/app [app_name].

If Composer is installed globally, run

composer create-project --prefer-dist josegonzalez/app [app_name]

You should now be able to visit the path to where you installed the app and see the default home page.

Features

Installed Packages and Plugins

The following is a list of CakePHP plugins that are installed and pre-configured:

The following is a list of PHP packages that are installed and pre-configured:

Configuration

By default, this skeleton will use josegonzalez/php-dotenv to load configuration from the following files:

  • config/app.php
  • config/.env
    • if this file does not exist, config/.env.default

For "global" configuration that does not change between environments, you should modify config/app.php. As this file is ignored by default, you should also endeavor to add sane defaults to app.default.php.

For configuration that varies between environments, you should modify the config/.env file. This file is a bash-compatible file that contains export KEY_1=VALUE statements. Underscores in keys are used to expand the key into a nested array, similar to how \Cake\Utility\Hash::expand() works.

As a convenience, certain variables are remapped automatically by the config/env.php file. You may add other paths at your leisure to this file.

Asset Compression

The markstory/asset_compress plugin is installed and enabled by default. It is used by the CrudView plugin, but does not currently have an integration with the default layout.

Crud Defaults

By default, the crud plugin has been enabled with all known customizations. Simply creating a controller will enable all CRUD-actions in the default RESTful api mode.

Note that we also default pagination sorting to the table's primaryKey (if there is a single primaryKey field).

Crud View Defaults

Crud View is enabled for all admin-prefixed actions in the Application::beforeFilter. You may also turn it on automatically for a controller by setting the controller's $isAdmin property to true.

Note that the scaffold.brand is set to the constant APP_NAME, which can be modified in your config/.env.default or config/.env files.

Customizing Bake

There now exists a config/bake_cli.php. This file should contain all bake-related event handlers. It is used to speed up the re-bake process such that we don't need to go in and re-add customizations.

As an example, the following event handler will add the Josegonzalez/Upload.Upload plugin to the Users.photo field:

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);
    }
});

Please refer to the bake documentation for more details.

Error Handling

Custom error handlers that ship errors to external error tracking services are set via the josegonzalez/php-error-handers package. To configure one, you can add the following key configuration to your config/app.php:

[
    'Error' => [
        'config' => [
            'handlers' => [
                // configuring the BugsnagHandler via an env var
                'BugsnagHandler' => [
                    'apiKey' => env('BUGSNAG_APIKEY', null)
                ],
            ],
        ],
    ],
];

Then simply set the proper environment variable in your config/.env or in your platform's configuration management tool.

Heroku Support

Heroku and other PaaS-software are supported by default. If deploying to Heroku, simply run the following and - assuming you have the proper remote configuration - everything should work as normal:

git push heroku master

Migrations for the core application will run by default. If you wish to run migrations for plugins, you will need to modify the key scripts.compile in your composer.json.

Queuing

Queuing support is provided through the Queuesadilla php package, with a CakePHP plugin providing integration.

You can start a queue off the jobs mysql table:

# 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

You can customize the engine configuration under the Queuesadilla.engine array in config/app.php. At the moment, it defaults to a config compatible with your application's mysql database config.

Need to queue something up?

// 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'
]);

See here for more information on defining jobs.

cakeadvent-2016's People

Contributors

josegonzalez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

squawk mxj333

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.