首页 > 解决方案 > 树枝中用于调用控制器功能的 Symfony4 按钮不起作用

问题描述

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

我在树枝上的按钮

<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(); 
    }
}

标签: controllertwigsymfony4

解决方案


代码中存在多个缺陷:

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

推荐阅读