Symfony 4表格发布到路线

问题描述 投票:0回答:2

我有一个问题,在Symfony 4中发布时删除了一个学说对象。我搜索了问题,我发现我可能要定义一个服务?我是symfony的初学者,所以请不要责怪我...我正在使用数据表,表格是模态的。当我按下模态中的删除按钮时,它会尝试发布到路线但出现错误:

未找到服务“请求”:您的意思是“request_stack”吗?无论如何,“App \ Controller \ ItemManagement”中的容器是一个较小的服务定位器,只知道“doctrine”,“form.factory”,“http_kernel”,“parameter_bag”,“request_stack”,“router”,“security” .csrf.token_manager“,”session“和”twig“服务。尝试使用依赖注入。

<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
  <div class="modal-dialog modal-dialog-centered" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="deleteit">Delete Item</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">

        Are you sure you want to delete this item?

        <form action="{{ path('delete_item')}}" method="POST" id="theform" >

          <input type="hidden" value="" name="itemtodel" id="itemtodel"/>
        </form>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="submit" form="theform"  class="btn btn-danger">Delete</button>
      </div>
    </div>
  </div>
</div>

在控制器中:

/**
     * @Route("/delitem", name="delete_item", methods={"POST"});
     */
    public function deletetheitem(Request $request)
    {
      if ($request->isMethod('POST')) {

        $itemid = $this->get('request')->request->get('itemtodel');

          ... deleting item code...
        }

      }


      return $this->redirectToRoute("item_management", [], 301);


    }

路径item_management位于同一个控制器中,工作正常。我是用错误的方式做的吗?如果你有什么建议我会很感激,谢谢!!!!

forms symfony post service symfony4
2个回答
0
投票

尝试更换

$this->get('request')->request->get('itemtodel')

通过

$request->request->get('itemtodel')

0
投票

首先,您不需要定义任何服务,因为一切都应该在Symfony 4中开箱即用(如果您没有自定义默认配置)。

其次,不要在模板中创建静态html表单。请改用Symfony Forms(https://symfony.com/doc/current/forms.html)。

第三,如果不应该对查询进行额外检查以获取要删除的对象,则不需要使用请求对象。如果你没有关闭默认Symfony 4的参数转换器选项(参见https://symfony.com/doc/current/best_practices/controllers.html#using-the-paramconverter),删除操作可能是这样的:

/**
 * @Route("/delitem/{item}", name="delete_item", methods={"POST"});
 */
public function deleteItemAction(Item $item)
{
    $doctrine = $this->getDoctrine();
    $em       = $doctrine->getManager();
    $em->remove($item);
    $em->flush();

    //process your response
}
© www.soinside.com 2019 - 2024. All rights reserved.