树枝中调用控制器功能的 Symfony4 按钮不起作用

Symfony4 button in twig to call function in a controller doesn't work

我按照 this 创建了一个调用函数的按钮,但它不起作用。 没有错误消息,重定向有效。但是订单状态没有改变.... 谁能找出问题所在?

我在树枝上的按钮

<a href="{{ path('change_order_status', { id : NewOrder.id }) }}" class="btn btn-primary">change status</a>

我的控制器


    /**
     * @param order $target
     *
     * @Route("/admin/order", name="change_order_status")
     */
    public function changeOrderStatus(order $target)
    {
        echo dump($target);
        if (!$target instanceof Order) {
         return;
        }
        $OrderStatus = $this->orderStatusRepository->find(OrderStatus::IN_PROGRESS);
        $target->setOrderStatus($OrderStatus);
        $target->setOrderDate(new \DateTime());
        $em = $this->getEntityManager();         
        $em->persist($Order);         
        $em->flush(); 
    }
}

代码中存在多个缺陷:

  • 您的控制器没有重定向(甚至没有响应),因此如果代码完整,您看到的重定向将不会来自 Symfony。
  • 操作参数 $target 带有 order 类型提示,但对象的类型为 Order(大小写很重要!)
    • 当类型提示正确时,instanceof 检查是否冗余
  • 你坚持$Order而不是$target所以变量名是错误的