Я создал пользовательское действие, которое отображает небольшую форму в нижней части моего шаблона шоу для заказов. Форма представляет собой базовый флажок и поле выбора с двумя кнопками. Он работает отлично, но рендеринг неправильный.
Я знаю, что способ рендеринга шаблона шоу не на 100% правильный, потому что при рендеринге левое меню больше не работает.
Вот мой пользовательский контроллер с действием;
namespace Qi\Bss\FrontendBundle\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Qi\Bss\FrontendBundle\Crud\Crud;
use Qi\Bss\BaseBundle\Entity\Business\PmodOrder;
use Symfony\Component\HttpFoundation\RedirectResponse;
class PmodOrderController extends Controller
{
/**
* @Route("/{id}/approve", name = "order_approve")
* @Security("is_granted('IS_AUTHENTICATED_FULLY')")
* @Method({"GET", "POST"})
*/
public function approveAction(Request $request, $id){
$em = $this->getDoctrine()->getManager();
$order = $em->getRepository('QiBssBaseBundle:PmodOrder')->find($id);
$approveForm = $this->createFormBuilder($order)
->add('requireApproval', 'checkbox', array('label' => 'Require second Approval', 'required' => false, 'mapped' => false))
->add('secondApprover', 'choice', array('choices' => Crud::enumStatus(), 'label' => 'User', 'required' => false))
->getForm();
$approveForm->handleRequest($request);
if ($approveForm->isSubmitted() && $approveForm->isValid()) {
$secondApproval = $request->request->get('form');
$approval = $approveForm->getData();
if (isset($secondApproval['requireApproval'])) {
$approval->setStatus(PmodOrder::STATUS_PARTLY_APPROVED);
$em->persist($approval);
$em->flush();
return new RedirectResponse($this->container->get('router')->generate('admin_bss_base_business_pmodorder_show', array('id' => $order->getId())));
} else {
$approval->setSecondApprover(NULL);
$approval->setStatus(PmodOrder::STATUS_APPROVED);
$em->persist($approval);
$em->flush();
return new RedirectResponse($this->container->get('router')->generate('admin_bss_base_business_pmodorder_show', array('id' => $order->getId())));
}
}
return $this->render('QiBssFrontendBundle:PmodOrder:order_approve.html.twig', array(
'order' => $order,
'form' => $approveForm->createView(),
));
}
}
Что меня беспокоит, так это тот факт, что я на самом деле должен расширять CRUDController Sonata. И когда я это делаю, я получаю сообщение об ошибке;
Во время рендеринга шаблона возникло исключение ("Для контроллера
Path\To\Controller\PmodOrderController
и текущего маршрута `` не определено_sonata_admin
``)
И я также знаю, что на самом деле я должен использовать возврат, например return new RedirectResponse($this->admin->generateUrl('show'));
В этот момент я уже не знаю, что делать. Если кто-нибудь может подсказать мне, как правильно расширить CRUDController в моем сценарии, я был бы очень признателен.