public function handleRequest(CantigaController $ctrl, Request $request) { $answer = $request->query->get('answer', null); if ($answer == 'yes') { $callback = $this->successCallback; $callback(); return $ctrl->redirect($ctrl->generateUrl($this->routeName, $this->routeArgs)); } elseif ($answer == 'no') { return $ctrl->redirect($ctrl->generateUrl($this->routeName, $this->routeArgs)); } else { $successArgs = $this->respondArgs; $cancelArgs = $this->respondArgs; $successArgs['answer'] = 'yes'; $cancelArgs['answer'] = 'no'; return $ctrl->render('CantigaCoreBundle:layout:question.html.twig', array('pageTitle' => $this->title, 'pageSubtitle' => $this->subtitle, 'questionTitle' => $ctrl->trans('Question', [], 'general'), 'question' => $this->question, 'successPath' => $ctrl->generateUrl($this->respondName, $successArgs), 'failurePath' => $ctrl->generateUrl($this->respondName, $cancelArgs), 'successBtn' => $ctrl->trans('Indeed', [], 'general'), 'failureBtn' => $ctrl->trans('Cancel', [], 'general'))); } }
public function run(CantigaController $controller, $id, Request $request) { try { $repository = $this->info->getRepository(); $item = $repository->getItem($id); $nameProperty = 'get' . ucfirst($this->info->getItemNameProperty()); $name = $item->{$nameProperty}(); if (!$item instanceof RemovableEntityInterface) { throw new LogicException('This entity does not support removing.'); } if (!$item->canRemove()) { throw new ModelException($controller->trans($this->info->getCannotRemoveMessage(), [$name])); } $answer = $request->query->get('answer', null); if ($answer == 'yes') { $repository->remove($item); return $this->onSuccess($controller, $controller->trans($this->info->getItemRemovedMessage(), [$item->{$nameProperty}()])); } elseif ($answer == 'no') { return $this->toIndexPage($controller); } else { $controller->breadcrumbs()->link($name, $this->info->getInfoPage(), $this->slugify(['id' => $id])); $controller->breadcrumbs()->link($controller->trans('Remove', [], 'general'), $this->info->getRemovePage(), $this->slugify(['id' => $id])); $vars = $this->getVars(); $vars['pageTitle'] = $this->info->getPageTitle(); $vars['pageSubtitle'] = $this->info->getPageSubtitle(); $vars['questionTitle'] = $controller->trans($this->info->getRemoveQuestionTitle()); $vars['question'] = $controller->trans($this->info->getRemoveQuestion(), [$item->{$nameProperty}()]); $vars['successPath'] = $controller->generateUrl($this->info->getRemovePage(), $this->slugify(['id' => $id, 'answer' => 'yes'])); $vars['failurePath'] = $controller->generateUrl($this->info->getRemovePage(), $this->slugify(['id' => $id, 'answer' => 'no'])); $vars['successBtn'] = $controller->trans('Indeed, remove it', [], 'general'); $vars['failureBtn'] = $controller->trans('Cancel', [], 'general'); $vars['indexPage'] = $this->info->getIndexPage(); $vars['infoPage'] = $this->info->getInfoPage(); $vars['insertPage'] = $this->info->getInsertPage(); $vars['editPage'] = $this->info->getEditPage(); $vars['removePage'] = $this->info->getRemovePage(); return $controller->render('CantigaCoreBundle:layout:question.html.twig', $vars); } } catch (ItemNotFoundException $exception) { return $this->onError($controller, $controller->trans($this->info->getItemNotFoundErrorMessage())); } catch (ModelException $exception) { return $this->onError($controller, $controller->trans($exception->getMessage())); } }