This is controller implementation for Zend MVC builds on sebaks/controller.
Most controllers must do
- Check if that controller\action can be accessed by called method (GET, POST, PUT etc.), if not - rise exception.
- Process request (this is responsibility of sebaks/controller).
- Validate request criteria.
- Validate request data.
- Process request (run any domain service).
- Collect errors.
- Collect result.
- Rise exceptions if error exists.
- Redirect to next page (if define).
- Setup ViewModel.
- Setup MVC Event.
That solution allow to customize any flow parameter and increases code reuse.
-
Install it via composer by running:
composer require sebaks/zend-mvc-controller
-
Copy
./vendor/sebaks/zend-mvc-controller/config/sebaks-zend-mvc-controller.global.php.dist
to./config/autoload/sebaks-zend-mvc-controller.global.php
.
You can configure that controller with route params:
'router' => [
'routes' => [
'user-update-profile' => [
'type' => 'Segment',
'options' => [
'route' => '/profile/update',
'defaults' => [
'controller' => 'sebaks-zend-mvc-controller',
'allowedMethods' => ['POST'],
'criteriaValidator' => Users\Action\Profile\CriteriaValidator::class,
'changesValidator' => Users\Action\Profile\ChangesValidator::class,
'service' => Users\Action\Profile\Updater::class,
'request' => Sebaks\Controller\RequestInterface::class,
'routeCriteria' => 'id'
'response' => Sebaks\Controller\ResponseInterface::class,
'redirectTo' => 'admin-user-list',
'viewModel' => Users\User\ViewModel::class,
],
],
],
],
],
criteriaValidator
, changesValidator
- if not defined, will be created Sebaks\Controller\EmptyValidator
service
- if not defined, will be created Sebaks\Controller\EmptyService
request
- if not defined, will be created Sebaks\Controller\Request
response
- if not defined, will be created Sebaks\Controller\Response
viewModel
- if not defined, will be created Zend\View\Model\ViewModel