yavin / symfony-init-controller
Runs init controller method before every action
Installs: 3 905
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- php: >=5.3.9
- symfony/event-dispatcher: ~2.0|~3.0
- symfony/http-kernel: ~2.0|~3.0
Requires (Dev)
- phpspec/phpspec: ~2.0
This package is auto-updated.
Last update: 2024-10-28 02:03:13 UTC
README
Add ability to execute init
method in controller before every action.
Based on this answer
Example
class SampleController extends Controller implements InitControllerInterface { protected $page; public function init(Request $request) { if ($request->get('redirect') == 1) { return $this->redirect('http://example.com'); } $this->page = $request->get('page'); } public function indexAction() { //some action code } }
Instalation
-
Add library to composer.json
"yavin/symfony-init-controller": "0.3"
and run command
composer update yavin/symfony-init-controller
-
Add service in your bundle services file
Resources/config/services.xml
:<service class="Yavin\Symfony\Controller\InitControllerSubscriber"> <tag name="kernel.event_subscriber"/> </service>
or if you have
services.yml
:services: symfony.controller.subscriber.init: class: Yavin\Symfony\Controller\InitControllerSubscriber tags: - { name: kernel.event_subscriber }
-
Then implement
InitControllerInterface
in controller that you want to have init method.namespace Acme\DemoBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use Yavin\Symfony\Controller\InitControllerInterface; class SampleController extends Controller implements InitControllerInterface { protected $page; public function init(Request $request) { //init method could return response, for example redirect if ($request->get('redirect') == 1) { return $this->redirect('http://example.com'); } $this->page = $request->get('page'); } public function indexAction() { //... } public function otherAction() { //... } }