Advanced

Configuration

Configuration in Concrete CMS 5.7 can use different locations to store their data. This is done using different Config loaders and savers. Most configuration values are stored and loaded in the filesystem, using the FileLoader and FileSaver, but a database loader and saver is also available. The ConfigRepository object handles getting and saving values – through the use of the generic Config facade class. Learn more...

Assets

Assets in Concrete refer to JavaScript or CSS files required to make something work. Assets can be named and grouped into into Asset Groups. Instead of referring to JavaScript or CSS files by path, they can be required by group name, which is less brittle and future-proof. Assets can register their own versions, and the assets subsystem won't include competing or incompatible versions of the same asset on a page. The asset subsystem can also handle minification and combination of separate assets into one file. Learn more...

Events

Concrete developers have access to a wide variety of application Events. Events in Concrete fire at different points, and the Events subsystem lets developers hook into those Events and run their own custom code when the event is fired. Developers can also fire their own events in their own code. Learn more...

Views & Controllers

Much of Concrete is built on Model-View-Controller philosophy. As such, many items have their own associated Controllers and Views. Examples include generic controllers and views (new in 5.7 and used primarily in the core to handle application interface), blocks (which include a controller.php file and view.php file), attributes, single pages, page types and more. Learn more...

Service Providers & Core Classes

Service providers are PHP classes that don't really belong to specific objects in Concrete. They are registered at startup and can be called easily using Concrete's "Core::make()" function. They can also be rebound by custom code on the fly. Examples of Service providers include "\Concrete\Core\Mail\Service" (which is used to send mail) and can be instantiated using Core::make('helper/mail'); Learn more...

Routing

Concrete 5.7 uses Symfony2's Routing Component to create a wide variety of system routes for the user interface. Routes can be registered by custom code, and then be visited in a web browser. Routes can execute a PHP closure or run a particular Controller method.

Database & Database Manager

Concrete's DatabaseManager class keeps track of multiple database Connection objects. These can be specified in Configuration and automatically connected to. The global Database facade automatically allows access to the current connection using \Database::get(); Learn more...

Facades

Facades are static classes that map to underlying implementations. These underlying implementations can be rebound. Examples of facades in Concrete include "Image", "Config", "Database", and more. Learn more...