Before we get into how to extend the functionality or appearance of Express Forms, we need to define some terms we'll be using throughout this documentation. (Don't worry if all the aspects of these terms don't make sense – they will be covered in this documentation.)
This one's obvious: the Express Form is the form object tied to an Express entity created through the Dashboard (or through package installation). The Express form bundles attribute keys and other Express controls into field sets.
The Context object is used to tell Concrete CMS what context we're rendering or accessing a form. Example form contexts include:
- Front-end Form
- Standard View
- Dashboard View
- Dashboard Form
Contexts are PHP objects that implement the
Every Express Form has a controller, which is a PHP script that controls the following behaviors of the form:
- Object Persistence
- Context Object Delivery
Implementing various methods in a controller can alter how forms are processed, validated, their notification functionality, and more. By default, Express Forms return the
Concrete\Core\Express\Controller\StandardController, which is used for validation, processing and notification – but an Express Form can return any controller, as long as it implements the
Form Control View
Like other "views" found throughout Concrete (block views, attribute view, etc...), form views are a special class that holds data about a particular form control, including where to load its templates
Form Control Renderer
A PHP class that is responsible for rendering a particular form control. It is delivered and specified by the control view.
The ContextRegistry object – an object of the
Concrete\Core\Form\Context\Registry\ContextRegistryInterface – is delivered by the form controller. It maps various abstract contexts to actual PHP objects. These PHP objects then determine how actual form controls are included, and from where, allowing for great theming flexibility.
An Express Form Processor is an object of the
Concrete\Core\Express\Form\Processor\ProcessorInterface, delivered by form controller. The processor handles validation and responses to successfully submitted forms.
A Form object's EntryManager object is an object of the
Concrete\Core\Express\Entry\EntryManagerInterface interface. It handles object persistence and attribute updates.
The Notifier object is delivered by the form controller, and is an object of the
Concrete\Core\Express\Entry\Notifier\NotifierInterface. The notifier handles sending express form notifications.
Now that you've been exposed to some of this terminology, read on to discover how to use these pieces to customize the design of an Express form.