abstract class AbstractWidgetController extends ActionController (View source)

This is the base class for all widget controllers.

Basically, it is an ActionController, and it additionally has $this->widgetConfiguration set to the Configuration of the current Widget.

Properties

protected UriBuilder $uriBuilder from  AbstractController
protected ValidatorResolver $validatorResolver from  AbstractController
protected ActionRequest $request

The current action request directed to this controller

from  AbstractController
protected ActionResponse $response

The response which will be returned by this action controller

from  AbstractController
protected Arguments $arguments

Arguments passed to the controller

from  AbstractController
protected ControllerContext $controllerContext from  AbstractController
protected PersistenceManagerInterface $persistenceManager from  AbstractController
protected array $supportedMediaTypes

A list of IANA media types which are supported by this controller

from  AbstractController
protected string $negotiatedMediaType

The media type that was negotiated by this controller

from  AbstractController
protected ObjectManagerInterface $objectManager from  ActionController
protected ReflectionService $reflectionService from  ActionController
protected MvcPropertyMappingConfigurationService $mvcPropertyMappingConfigurationService from  ActionController
protected ViewConfigurationManager $viewConfigurationManager from  ActionController
protected ViewInterface $view

The current view, as resolved by resolveView()

from  ActionController
protected string $viewObjectNamePattern

Pattern after which the view object name is built if no format-specific view could be resolved.

from  ActionController
protected array $viewFormatToObjectNameMap

A list of formats and object names of the views which should render them.

from  ActionController
protected string $defaultViewObjectName

The default view object to use if none of the resolved views can render a response for the current request.

from  ActionController
protected string $defaultViewImplementation from  ActionController
protected string $actionMethodName

Name of the action method

from  ActionController
protected string $errorMethodName

Name of the special error action method which is called in case of errors

from  ActionController
protected array $settings from  ActionController
protected LoggerInterface $logger from  ActionController
protected bool $enableDynamicTypeValidation

Feature flag to enable the potentially breaking support of validation for dynamic types specified with __type argument or in the PropertyMapperConfiguration.

from  ActionController
protected $widgetConfiguration

Configuration for this widget.

Methods

initializeController(ActionRequest $request, ActionResponse $response)

Initializes the controller

getControllerContext()

Returns this controller's context.

void
addFlashMessage(string $messageBody, string $messageTitle = '', string $severity = Error\Message::SEVERITY_OK, array $messageArguments = [], int $messageCode = null)

Creates a Message object and adds it to the FlashMessageContainer.

forward(string $actionName, string $controllerName = null, string $packageKey = null, array $arguments = [])

Forwards the request to another action and / or controller.

void
forwardToRequest(ActionRequest $request)

Forwards the request to another action and / or controller.

void
redirect(string $actionName, string $controllerName = null, string $packageKey = null, array $arguments = [], int $delay = 0, int $statusCode = 303, string $format = null)

Redirects the request to another action and / or controller.

void
redirectToRequest(ActionRequest $request, int $delay = 0, int $statusCode = 303)

Redirects the request to another action and / or controller.

redirectToUri(mixed $uri, int $delay = 0, int $statusCode = 303)

Redirects to another URI

throwStatus(int $statusCode, string $statusMessage = null, string $content = null)

Sends the specified HTTP status immediately.

void
mapRequestArgumentsToControllerArguments()

Maps arguments delivered by the request object to the local controller arguments.

void
injectSettings(array $settings)

No description

void
injectLogger(LoggerInterface $logger)

Injects the (system) logger based on PSR-3.

void
injectThrowableStorage(ThrowableStorageInterface $throwableStorage)

Injects the throwable storage.

void
processRequest(ActionRequest $request, ActionResponse $response)

Handles a request. The result output is returned by altering the given response.

string
resolveActionMethodName()

Resolves and checks the current action method name

void
initializeActionMethodArguments()

Implementation of the arguments initialization in the action controller: Automatically registers arguments of the current action

static array
getActionMethodParameters(ObjectManagerInterface $objectManager)

Returns a map of action method names and their parameters.

array
getInformationNeededForInitializeActionMethodValidators()

This is a helper method purely used to make initializeActionMethodValidators() testable without mocking static methods.

void
initializeActionMethodValidators()

Adds the needed validators to the Arguments:

static array
getActionValidationGroups(ObjectManagerInterface $objectManager)

Returns a map of action method names and their validation groups.

static array
getActionValidateAnnotationData(ObjectManagerInterface $objectManager)

Returns a map of action method names and their validation parameters.

void
initializeAction()

Initializes the controller before invoking an action method.

void
callActionMethod()

Calls the specified action method and passes the arguments.

static array
static array
getPublicActionMethods(ObjectManagerInterface $objectManager)

No description

resolveView()

Prepares a view for the current action and stores it in $this->view.

emitViewResolved(ViewInterface $view)

Emit that the view is resolved. The passed ViewInterface reference, gives the possibility to add variables to the view, before passing it on to further rendering

mixed
resolveViewObjectName()

Determines the fully qualified view object name.

void
initializeView(ViewInterface $view)

Initializes the view before invoking an action method.

string
errorAction()

A special action which is called if the originally intended action could not be called, for example if the arguments were not valid.

void
handleTargetNotFoundError()

Checks if the arguments validation result contain errors of type TargetNotFoundError and throws a TargetNotFoundException if that's the case for a top-level object.

void
addErrorFlashMessage()

If an error occurred during this request, this adds a flash message describing the error to the flash message container.

void
forwardToReferringRequest()

If information on the request before the current request was sent, this method forwards back to the originating request. This effectively ends processing of the current request, so do not call this method before you have finished the necessary business logic!

string
getFlattenedValidationErrorMessage()

Returns a string containing all validation errors separated by PHP_EOL.

getErrorFlashMessage()

A template method for displaying custom error flash messages, or to display no flash message at all on errors. Override this to customize the flash message in your action controller.

renderView()

Renders the view and applies the result to the response object.

Details

protected initializeController(ActionRequest $request, ActionResponse $response)

Initializes the controller

This method should be called by the concrete processRequest() method.

Parameters

ActionRequest $request
ActionResponse $response

Exceptions

UnsupportedRequestTypeException

ControllerContext getControllerContext()

Returns this controller's context.

Note that the context is only available after processRequest() has been called.

Return Value

ControllerContext

The current controller context

void addFlashMessage(string $messageBody, string $messageTitle = '', string $severity = Error\Message::SEVERITY_OK, array $messageArguments = [], int $messageCode = null)

Creates a Message object and adds it to the FlashMessageContainer.

This method should be used to add FlashMessages rather than interacting with the container directly.

Parameters

string $messageBody

text of the FlashMessage

string $messageTitle

optional header of the FlashMessage

string $severity

severity of the FlashMessage (one of the Message::SEVERITY_* constants)

array $messageArguments

arguments to be passed to the FlashMessage

int $messageCode

Return Value

void

Exceptions

InvalidArgumentException

See also

Message

protected forward(string $actionName, string $controllerName = null, string $packageKey = null, array $arguments = [])

Forwards the request to another action and / or controller.

Request is directly transferred to the other action / controller

Parameters

string $actionName

Name of the action to forward to

string $controllerName

Unqualified object name of the controller to forward to. If not specified, the current controller is used.

string $packageKey

Key of the package containing the controller to forward to. May also contain the sub package, concatenated with backslash (Vendor.Foo\Bar\Baz). If not specified, the current package is assumed.

array $arguments

Arguments to pass to the target action

Exceptions

ForwardException

See also

redirect()

protected void forwardToRequest(ActionRequest $request)

Forwards the request to another action and / or controller.

Request is directly transfered to the other action / controller

Parameters

ActionRequest $request

The request to redirect to

Return Value

void

Exceptions

ForwardException

See also

redirectToRequest()

protected void redirect(string $actionName, string $controllerName = null, string $packageKey = null, array $arguments = [], int $delay = 0, int $statusCode = 303, string $format = null)

Redirects the request to another action and / or controller.

Redirect will be sent to the client which then performs another request to the new URI.

NOTE: This method only supports web requests and will throw an exception if used with other request types.

Parameters

string $actionName

Name of the action to forward to

string $controllerName

Unqualified object name of the controller to forward to. If not specified, the current controller is used.

string $packageKey

Key of the package containing the controller to forward to. If not specified, the current package is assumed.

array $arguments

Array of arguments for the target action

int $delay

(optional) The delay in seconds. Default is no delay.

int $statusCode

(optional) The HTTP status code for the redirect. Default is "303 See Other"

string $format

The format to use for the redirect URI

Return Value

void

Exceptions

StopActionException

See also

forward()

protected void redirectToRequest(ActionRequest $request, int $delay = 0, int $statusCode = 303)

Redirects the request to another action and / or controller.

Redirect will be sent to the client which then performs another request to the new URI.

NOTE: This method only supports web requests and will throw an exception if used with other request types.

Parameters

ActionRequest $request

The request to redirect to

int $delay

(optional) The delay in seconds. Default is no delay.

int $statusCode

(optional) The HTTP status code for the redirect. Default is "303 See Other"

Return Value

void

Exceptions

StopActionException

See also

forwardToRequest()

protected redirectToUri(mixed $uri, int $delay = 0, int $statusCode = 303)

Redirects to another URI

Parameters

mixed $uri

Either a string representation of a URI or a \Neos\Flow\Http\Uri object

int $delay

(optional) The delay in seconds. Default is no delay.

int $statusCode

(optional) The HTTP status code for the redirect. Default is "303 See Other"

Exceptions

UnsupportedRequestTypeException
StopActionException

protected throwStatus(int $statusCode, string $statusMessage = null, string $content = null)

Sends the specified HTTP status immediately.

NOTE: This method only supports web requests and will throw an exception if used with other request types.

Parameters

int $statusCode

The HTTP status code

string $statusMessage

A custom HTTP status message

string $content

Body content which further explains the status

Exceptions

StopActionException

protected void mapRequestArgumentsToControllerArguments()

Maps arguments delivered by the request object to the local controller arguments.

Return Value

void

Exceptions

RequiredArgumentMissingException

void injectSettings(array $settings)

No description

Parameters

array $settings

Return Value

void

void injectLogger(LoggerInterface $logger)

Injects the (system) logger based on PSR-3.

Parameters

LoggerInterface $logger

Return Value

void

void injectThrowableStorage(ThrowableStorageInterface $throwableStorage)

Injects the throwable storage.

Parameters

ThrowableStorageInterface $throwableStorage

Return Value

void

void processRequest(ActionRequest $request, ActionResponse $response)

Handles a request. The result output is returned by altering the given response.

Parameters

ActionRequest $request

The request object

ActionResponse $response

The response, modified by the controller

Return Value

void

Exceptions

WidgetContextNotFoundException
UnsupportedRequestTypeException

protected string resolveActionMethodName()

Resolves and checks the current action method name

Return Value

string

Method name of the current action

Exceptions

NoSuchActionException
InvalidActionVisibilityException

protected void initializeActionMethodArguments()

Implementation of the arguments initialization in the action controller: Automatically registers arguments of the current action

Don't override this method - use initializeAction() instead.

Return Value

void

Exceptions

InvalidArgumentTypeException

See also

initializeArguments()

static array getActionMethodParameters(ObjectManagerInterface $objectManager)

Returns a map of action method names and their parameters.

Parameters

ObjectManagerInterface $objectManager

Return Value

array

Array of method parameters by action name

protected array getInformationNeededForInitializeActionMethodValidators()

This is a helper method purely used to make initializeActionMethodValidators() testable without mocking static methods.

Return Value

array

protected void initializeActionMethodValidators()

Adds the needed validators to the Arguments:

  • Validators checking the data type from the @param annotation
  • Custom validators specified with validate annotations.
  • Model-based validators (validate annotations in the model)
  • Custom model validator classes

Return Value

void

static array getActionValidationGroups(ObjectManagerInterface $objectManager)

Returns a map of action method names and their validation groups.

Parameters

ObjectManagerInterface $objectManager

Return Value

array

Array of validation groups by action method name

static array getActionValidateAnnotationData(ObjectManagerInterface $objectManager)

Returns a map of action method names and their validation parameters.

Parameters

ObjectManagerInterface $objectManager

Return Value

array

Array of validate annotation parameters by action method name

protected void initializeAction()

Initializes the controller before invoking an action method.

Override this method to solve tasks which all actions have in common.

Return Value

void

protected void callActionMethod()

Calls the specified action method and passes the arguments.

If the action returns a string, it is appended to the content in the response object. If the action doesn't return anything and a valid view exists, the view is rendered automatically.

TODO: In next major this will no longer append content and the response will probably be unique per call.

Return Value

void

static array getActionIgnoredValidationArguments(ObjectManagerInterface $objectManager)

No description

Parameters

ObjectManagerInterface $objectManager

Return Value

array

Array of argument names as key by action method name

static array getPublicActionMethods(ObjectManagerInterface $objectManager)

No description

Parameters

ObjectManagerInterface $objectManager

Return Value

array

Array of all public action method names, indexed by method name

protected ViewInterface resolveView()

Prepares a view for the current action and stores it in $this->view.

By default, this method tries to locate a view with a name matching the current action.

Return Value

ViewInterface

the resolved view

Exceptions

ViewNotFoundException

protected emitViewResolved(ViewInterface $view)

Emit that the view is resolved. The passed ViewInterface reference, gives the possibility to add variables to the view, before passing it on to further rendering

Parameters

ViewInterface $view

protected mixed resolveViewObjectName()

Determines the fully qualified view object name.

Return Value

mixed

The fully qualified view object name or false if no matching view could be found.

protected void initializeView(ViewInterface $view)

Initializes the view before invoking an action method.

Override this method to solve assign variables common for all actions or prepare the view in another way before the action is called.

Parameters

ViewInterface $view

The view to be initialized

Return Value

void

protected string errorAction()

A special action which is called if the originally intended action could not be called, for example if the arguments were not valid.

The default implementation checks for TargetNotFoundErrors, sets a flash message, request errors and forwards back to the originating action. This is suitable for most actions dealing with form input.

Return Value

string

protected void handleTargetNotFoundError()

Checks if the arguments validation result contain errors of type TargetNotFoundError and throws a TargetNotFoundException if that's the case for a top-level object.

You can override this method (or the errorAction()) if you need a different behavior

Return Value

void

Exceptions

TargetNotFoundException

protected void addErrorFlashMessage()

If an error occurred during this request, this adds a flash message describing the error to the flash message container.

Return Value

void

protected void forwardToReferringRequest()

If information on the request before the current request was sent, this method forwards back to the originating request. This effectively ends processing of the current request, so do not call this method before you have finished the necessary business logic!

Return Value

void

Exceptions

ForwardException

protected string getFlattenedValidationErrorMessage()

Returns a string containing all validation errors separated by PHP_EOL.

Return Value

string

protected Message getErrorFlashMessage()

A template method for displaying custom error flash messages, or to display no flash message at all on errors. Override this to customize the flash message in your action controller.

Return Value

Message

The flash message or false if no flash message should be set

protected renderView()

Renders the view and applies the result to the response object.