dev-master 2014-06-18 11:39 UTC

This package is not auto-updated.

Last update: 2024-02-12 23:31:26 UTC


This pattern introduces more complexity and issues then it solves. Use Nette events with rixxi/redirector instead, it is more robust and simpler solution then custom event classes.

Discontinued support - You can use it, but you have been warned.

KISS pattern for solving most of the onEvent problems using basket with some code (IEvent).

Solves $presenter->redirect([$code, ], $destination[, $arguments]) for you in civilized manner


use Rixxi\Event\IEvent;
use Rixxi\Event\IRedirect;
use Rixxi\Event\Redirect as RedirectTrait;

class ShitHappensEvent implements IEvent, IRedirect

  use RedirectTrait;


class Service extends Nette\Object

  public $onShitHappens = [];

  public function __construct(Rixxi\Event\Redirector $redirector)
    $this->redirector = $redirector;
  public function makeShitHappen()
    $this->onShitHappens($event = ShitHappensEvent);


// register extension and let DI do its magic

$service = new Service();

$service->onShitHappen[] = function (ShitHappensEvent $e) {
  if (/* some important condition */) {
    $e->redirect('Presenter:action', [ 'arguments ' ]);

$service->onShitHappen[] = function () {
  echo 'Default $presenter->redirect(...) would kill request before I can write something. So grateful!';

// you can easily add default redirection
$service->onShitHappen[] = Rixxi\Event\Helper::defaultRedirect('Homepage:default');

// shit will happen and then redirection too