Download the PHP package wieni/wmcontroller without Composer
On this page you can find all versions of the php package wieni/wmcontroller. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download wieni/wmcontroller
More information about wieni/wmcontroller
Files in wieni/wmcontroller
Package wmcontroller
Short Description Adds support for bundle-specific controllers for Drupal 9 entities.
License MIT
Informations about the package wmcontroller
Wieni Controller
Adds support for bundle-specific controllers for Drupal 8 entities.
Why?
- Improve the developer experience of the Entity API by providing the ability to render entities of different bundles in different ways.
- A new way of building layouts: gather your data in the controller and use it to render a Twig template. Inspired by Laravel and other MVC frameworks. Completely optional.
Installation
This package requires PHP 7.1 and Drupal 8 or higher. It can be installed using Composer:
You should also include the patch from #2638686 if you're getting early rendering errors in your controllers.
Configuration
Before you get started, make sure the theme or module that will hold your templates is configured to do so. Check the wmtwig documentation for more info.
Configuration is stored as service parameters. You can override these in a service YAML file defined in
$settings['container_yamls']
or in the services.yml
file of a (custom) module.
How does it work?
Creating controllers
-
Create bundle-specific controllers by creating new classes with the following naming convention:
src\Controller\<entityType>\<bundle>Controller
(
<entityType>
and<bundle>
are singular and camelCased)For example:
src\Controller\TaxonomyTerm\CategoryController
will be matched against ataxonomy_term
with bundlecategory
. -
This module will always call the
show
method on the controller class. - A
ControllerBase
class includingViewBuilderTrait
,MainEntityTrait
andRedirectBuilderTrait
is provided, but extending this class is not required.
Example
Rendering Twig templates
Using the ViewBuilder
class, you can easily render Twig
templates without having to mess with render arrays.
This module automatically resolves view builders to render arrays, so it's safe to return instances of this class in controllers.
The easiest way of building views is using the view
method included in ViewBuilderTrait. Just pass
the template name, any parameters and you're good to go.
The template name is the path to the template file, but with dots as path separators and without the file extension. Note that you can only use templates in the configured theme and path.
Example
Accessing the main entity
It's often useful to access the main entity of the current request, e.g. on canonical or edit routes.
It has always been possible to access this entity by extracting it from the route parameters of the current route match,
but the MainEntity
service makes that easier.
Apart from having easier access to the entity, it's also possible to manually set the main entity of custom routes
using the MainEntityTrait or the wmcontroller.main_entity
service directly.
If the wmpage_cache
module is installed, this main entity is also used to
determine cachability metadata of the current request.
Changelog
All notable changes to this project will be documented in the CHANGELOG file.
Security
If you discover any security-related issues, please email [email protected] instead of using the issue tracker.
License
Distributed under the MIT License. See the LICENSE file for more information.