【问题标题】:The controller must return a response 500 Internal Server Error - LogicException控制器必须返回响应 500 Internal Server Error - LogicException
【发布时间】:2015-05-29 15:25:52
【问题描述】:

一周后找不到解决这个问题的方法:'(

控制器必须返回一个响应(Array(order => 对象(Bull\LogisticBundle\Entity\Order),形式 => 对象(Symfony\Component\Form\FormView),postRoute => /taz/web/app_dev.php/fr/spareordered/create/1) 给出)。 500 内部 服务器错误 - LogicException

这里是我的控制器:

namespace Taz\LogisticBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Taz\LogisticBundle\Entity\SparepartOrdered;
use Taz\LogisticBundle\Form\SparepartOrderedType;

/**
 * SparepartOrderedController controller.
 *
 * @Route("/spareordered")
 *
 * @SuppressWarnings(PHPMD)
 */
class SparepartOrderedController extends LogisticController
{



     const CONTEXT = 'SparepartOrdered';

        /**
         * Return the new SparepartOrdered form.
         *
         * @param int $orderId the order id
         *
         * @return array view parameters
         *
         * @Route("/new/{orderId}", name="sparepartordered_new")
         */
        public function newAction($orderId)
        {
            $this->writeLog();
            $order = $this->getOrderRepository()->find($orderId);

            if (!$order) {
                throw $this->createNotFoundException('Unable to find Order entity.');
            }

            $sparepartOrdered = new SparepartOrdered();
            $form = $this->createSparepartOrderedForm($sparepartOrdered);

            $postRoute = $this->generateUrl(
                'sparepartordered_create',
                array('orderId' => $order->getId())
            );

            return array(
                'order'     => $order,
                'form'      => $form->createView(),
                'postRoute' => $postRoute
            );
        }

/**
     * Creates a new SparepartOrdered entity.
     *
     * @param Request $request    the request
     * @param int     $orderId    the order id
     *
     * @return array view parameters
     *
     * @Route("/create/{orderId}", name="sparepartordered_create")
     * @Method("POST")
     * @Template("TazLogisticBundle:SparepartOrdered:new.html.twig")
     */
    public function createSparepartAction(Request $request, $orderId)
    {
        $this->writeLog();
        $order = $this->getOrderRepository()->find($orderId);

        if (!$order) {
            throw $this->createNotFoundException(
                'Unable to find Order entity.'
            );
        }

        $sparepartOrdered = new SparepartOrdered();
        $form = $this->createSparepartOrderedForm($sparepartOrdered);
        $form->handleRequest($request);

        $sparepartOrdered->setOrder($order);

        if ($form->isValid()) {

            $eManager = $this->getDoctrine()->getManager();
            $eManager->persist($sparepartOrdered);
            $eManager->persist($order);
            $eManager->flush();

            $this->setFlashNotice('success.sparepartordered.created');

            return $this->redirect(
                    $this->generateUrl('order_edit',
                                       array('entityId' => $order->getId()))
            );
        } else {
            $postRoute = $this->generateUrl(
                'sparepartordered_create',
                array('orderId' => $order->getId())
            );

            return array(
                'order'  => $order,
                'form'      => $form->createView(),
                'postRoute' => $postRoute
            );
        }
    }

    /**
     * Create the SparepartOrdered Form
     *
     * @param type $entity the SparepartOrdered to map to the form
     *
     * @return SparepartOrderedType the form
     */
    private function createSparepartOrderedForm($entity)
    {
        $this->writeLog();

        return $this->createForm(
                new SparepartOrderedType(), $entity,
                array(
                'em'           => $this->getDoctrine()->getManager()
                )
        );
    }

我的实体和存储库运行良好。基于此主题的所有解决方法都不能解决此问题。

感谢您的帮助!

问候,

【问题讨论】:

  • 能否详细说明您尝试过的解决方法?

标签: php symfony


【解决方案1】:

错误是明确的:the controller must return a response

如果您只想返回一个参数数组,并利用@template 注释,则必须将其添加到newAction 方法的注释中,与其他操作相同。

【讨论】:

  • 感谢您的回复,也许是明确的,但仍然无法正常工作:'( with @template()
  • 如果我用 return array();这是工作,但没用:'(
猜你喜欢
  • 2017-02-20
  • 1970-01-01
  • 2020-09-11
  • 2018-04-18
  • 2020-02-01
  • 2015-09-15
  • 2023-03-30
  • 2011-09-22
相关资源
最近更新 更多