/** * @param \Symfony\Component\HttpFoundation\Request $request * * @return \Symfony\Component\HttpFoundation\Response|array */ public function repeatAction(Request $request) { $repeatData = $this->getFacade()->getRepeatData($request); if (!is_array($repeatData)) { return new Response('No request to repeat.'); } TransferServer::getInstance()->activateRepeating(); $request = Request::createFromGlobals(); $request->attributes->set('module', $repeatData['module']); $request->attributes->set('controller', $repeatData['controller']); $request->attributes->set('action', $repeatData['action']); $request->request->replace($repeatData); return $this->getApplication()->handle($request, HttpKernelInterface::SUB_REQUEST); }
/** * @param \Spryker\Zed\Kernel\Communication\Controller\AbstractGatewayController $controller * @param string $action * * @throws \LogicException * * @return \Spryker\Zed\ZedRequest\Business\Client\Request */ private function getRequestTransfer(AbstractGatewayController $controller, $action) { $classReflection = new ReflectionObject($controller); $methodReflection = $classReflection->getMethod($action); $parameters = $methodReflection->getParameters(); $countParameters = count($parameters); if ($countParameters > 2 || $countParameters === 2 && end($parameters)->getClass() !== 'Spryker\\Shared\\Library\\Transfer\\Request') { throw new LogicException('Only one transfer object can be received in yves-action'); } /** @var \ReflectionParameter $parameter */ $parameter = array_shift($parameters); if ($parameter) { $class = $parameter->getClass(); if (empty($class)) { throw new LogicException('You need to specify a class for the parameter in the yves-action.'); } $this->validateClassIsTransferObject($class->getName()); } return TransferServer::getInstance()->getRequest(); }
/** * @return void */ private function resetTransferServer() { $fixtureServer = TransferServer::getInstance(); $this->resetSingleton($fixtureServer); CoreTransferServer::getInstance($this->createRepeaterMock()); }
/** * @param \Silex\Application $app * * @return void */ public function boot(Application $app) { $app->before(function (Request $request) { TransferServer::getInstance()->setRequest($request); }); }