Skip to content

Instantly share code, notes, and snippets.

@Majkl578
Created April 11, 2013 21:29
Show Gist options
  • Save Majkl578/5367340 to your computer and use it in GitHub Desktop.
Save Majkl578/5367340 to your computer and use it in GitHub Desktop.
Variant of Presenter::restoreRequest() which ignores signals.
<?php
use Nette\Application\IResponse;
use Nette\Application\Responses\ForwardResponse;
use Nette\Application\UI\Presenter;
trait RestoreRequestWithoutSignalTrait
{
/**
* Restores current request to session. Ignores signals.
* @param string
* @return void
* @author Michael Moravec
*/
public function restoreRequestWithoutSignal($key)
{
$this->onShutdown[__METHOD__] = function (Presenter $presenter, IResponse $response) {
if (!$response instanceof ForwardResponse) {
return;
}
$parameters = $response->getRequest()->getParameters();
unset($parameters[$presenter::SIGNAL_KEY]);
$response->getRequest()->setParameters($parameters);
};
$this->restoreRequest($key);
// nothing happened, restore original behavior
unset($this->onShutdown[__METHOD__]);
}
}
class SomePresenter extends Presenter
{
use RestoreRequestWithoutSignalTrait;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment