【问题标题】:Symfony2 - How to preserve request parameter when submitting form?Symfony2 - 提交表单时如何保留请求参数?
【发布时间】:2015-12-14 23:51:53
【问题描述】:

情况如下: 一些表单处理操作是从带有请求 POST 参数(即实体 ID)的 twig 模板调用的。提交表单并再次调用操作以修改底层对象的值后,我的 Request 对象中的实体 ID 参数消失了(它被 Symfony Form 请求对象取代)。

问题如下:在两次表单调用之间保留此请求参数的最佳做法是什么?

下面是简单的代码示例:

public function editEntityAction(Request $request, $type)
{

    $objId = $request->request->get('entityId');

    $updateObj = null;
    $form = null;

    $dbMen = $dbMen->getRepository('BakaMainBundle:Brand');
    $updateObj = $dbMen->find($objId);
    $form = $this->createForm(new AddBrand(), $updateObj);

    if ($updateObj == null && $form == null)
        $this->redirectToRoute('baka_main_main_index');

    $form->handleRequest($request);

    if ($form->isValid() && $form->isSubmitted())
    {
        $menager = $this->getDoctrine()->getManager();
        $menager->flush();
    }

    return $this->render('@BakaMain/Specs/EditEntity.html.twig',
        array('form' => ($form->createView()));
}

【问题讨论】:

    标签: php forms symfony request


    【解决方案1】:

    保存值有三种可能的方式

    1. 会话
    2. cookies
    3. 隐藏的表单字段

    只有当它是跨应用程序使用的全局配置变量时,您才能将其存储在 parameters.yml 中

    有些 flashbags 用于显示 flash 消息,例如“表单提交成功”或“表单提交失败”,对于下一个请求仅有效一次

    我已经给了你所有的选项,你可以做相应的选择,如果需要你可以问我更多的细节

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-19
      • 2013-07-18
      • 2015-02-26
      • 2011-11-04
      • 1970-01-01
      • 2021-01-13
      相关资源
      最近更新 更多