Symfony,创建一个表单输入“保存并停留”服务

亚历克西斯·韦伯

情况

我有一个控制器,例如处理页面编辑。

/**
 * Update a page
 * @ParamConverter("page", class="AcmeBundle:Page", options={"id" = "page_id"})
 */
public function editAction(Page $page, Request $request)
{
    $form = $this->createForm(PageType::class, $page);

    if ($form->handleRequest($request)->isSubmitted() && $form->isValid()) {
        $this->getDoctrine()->getManager()->flush();

        $this->addFlash('success', 'page_admin.flash.updated');

        if ($form->get('save_and_stay')->isClicked()) {
            return $this->redirect($request->headers->get('referer'));
        }
        else {
            return $this->redirectToRoute('acme_page_admin_index');
        }
    }

    return $this->render('AcmeBundle:PageAdmin:edit.html.twig', array(
        'form' => $form->createView()
    ));
}

我的表单包括两个提交按钮,一个用于保存Page并返回到索引,一个用于保存Page并保留在编辑表单中。

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('headline')
        ->add('body')
        ->add('save', SubmitType::class)
        ->add('save_and_stay', SubmitType::class)
    ;
}

问题

提交表单后,我只需检查单击了哪个按钮并执行正确的操作即可。但是我想我需要为此提供服务,但我不知道该怎么做。如何命名(acme.form.save_and_stay?),在何处存储(AcmeBundle\Service\SaveAndStay?)。

我很难用服务来组织我的Symfony应用程序,并难以理解何时应该使用它们。

奥利弗·阿德里亚(Oliver Adria)

我认为您不需要服务。您可以这样重写中间部分:

    if ($form->handleRequest($request)->isSubmitted() && $form->isValid()) {

        [...]

        if ($form->get('save')->isClicked()) {
            return $this->redirectToRoute('acme_page_admin_index');
        }
    }
    return $this->render('AcmeBundle:PageAdmin:edit.html.twig', array(
        'form' => $form->createView()
    ));

因此,您将检查是否单击了“保存并转到索引”按钮-如果是,则重定向到该位置。否则,只需使用插入的值再次呈现该表单。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过我的表单输入创建一个FormGroup对象

来自分类Dev

从模型创建表单,保存到另一个

来自分类Dev

创建一个可以访问原则的symfony服务

来自分类Dev

创建一个记录所有输入的服务

来自分类Dev

Symfony表单创建新对象并创建第一个一对多对象

来自分类Dev

Symfony 2.3:在访问另一个站点时记住表单输入

来自分类Dev

如何在Symfony2中创建具有一个实体的多行的表单

来自分类Dev

如何创建一个自定义的SaveType,它是Symfony表单中SubmitType的子级

来自分类Dev

使用数据库中的数据创建一个Symfony / Twig表单

来自分类Dev

表单输入数组正在创建一个空数组,!empty()无法使用

来自分类Dev

在Ruby on Rails中为每个记录创建一个输入日志表单

来自分类Dev

如果表单输入字段包含使用PHP的数据,则创建一个变量

来自分类Dev

创建一个编辑表单

来自分类Dev

使用节点JS将特定名称的多重表单输入保存到一个数组中(npm表单)

来自分类Dev

如何创建命名表单构建器以在一个请求中使用少量表单Symfony 3

来自分类Dev

创建一个搜索表单,该表单将从用户那里获取输入并显示视频弹出窗口

来自分类Dev

Formset保存表单集中的第一个表单

来自分类Dev

创建Ipython magic命令以将最后一个控制台输入保存到文件

来自分类Dev

创建一个保存方法输入的装饰器 - 返回“NoneType”对象不可调用

来自分类Dev

使用两个密码输入创建一个 Django 注册表单,其中只有一个被发送到数据库

来自分类Dev

我试图创建一个页脚停留底部,但它不起作用

来自分类Dev

Symfony2 | 表单-创建复杂的字段类型并将其转换为orm中的一个字段

来自分类Dev

在Sylius(Symfony3)上创建一个自定义资源表单:“期望的标量,但得到了数组”

来自分类Dev

我正在尝试创建一个 javascript 页面以将信息输入到表单中,但它不起作用

来自分类Dev

如何创建一个 HTML/PHP 表单,其中文本输入字段并排水平对齐

来自分类Dev

查找表单输入的第一个单词

来自分类Dev

从一个输入填充额外的表单参数

来自分类Dev

提交表单后,停留在同一页面,在页面中显示一个单词

来自分类Dev

用户表单输入一个值,被转换并自动进入另一个表单输入作为值

Related 相关文章

  1. 1

    通过我的表单输入创建一个FormGroup对象

  2. 2

    从模型创建表单,保存到另一个

  3. 3

    创建一个可以访问原则的symfony服务

  4. 4

    创建一个记录所有输入的服务

  5. 5

    Symfony表单创建新对象并创建第一个一对多对象

  6. 6

    Symfony 2.3:在访问另一个站点时记住表单输入

  7. 7

    如何在Symfony2中创建具有一个实体的多行的表单

  8. 8

    如何创建一个自定义的SaveType,它是Symfony表单中SubmitType的子级

  9. 9

    使用数据库中的数据创建一个Symfony / Twig表单

  10. 10

    表单输入数组正在创建一个空数组,!empty()无法使用

  11. 11

    在Ruby on Rails中为每个记录创建一个输入日志表单

  12. 12

    如果表单输入字段包含使用PHP的数据,则创建一个变量

  13. 13

    创建一个编辑表单

  14. 14

    使用节点JS将特定名称的多重表单输入保存到一个数组中(npm表单)

  15. 15

    如何创建命名表单构建器以在一个请求中使用少量表单Symfony 3

  16. 16

    创建一个搜索表单,该表单将从用户那里获取输入并显示视频弹出窗口

  17. 17

    Formset保存表单集中的第一个表单

  18. 18

    创建Ipython magic命令以将最后一个控制台输入保存到文件

  19. 19

    创建一个保存方法输入的装饰器 - 返回“NoneType”对象不可调用

  20. 20

    使用两个密码输入创建一个 Django 注册表单,其中只有一个被发送到数据库

  21. 21

    我试图创建一个页脚停留底部,但它不起作用

  22. 22

    Symfony2 | 表单-创建复杂的字段类型并将其转换为orm中的一个字段

  23. 23

    在Sylius(Symfony3)上创建一个自定义资源表单:“期望的标量,但得到了数组”

  24. 24

    我正在尝试创建一个 javascript 页面以将信息输入到表单中,但它不起作用

  25. 25

    如何创建一个 HTML/PHP 表单,其中文本输入字段并排水平对齐

  26. 26

    查找表单输入的第一个单词

  27. 27

    从一个输入填充额外的表单参数

  28. 28

    提交表单后,停留在同一页面,在页面中显示一个单词

  29. 29

    用户表单输入一个值,被转换并自动进入另一个表单输入作为值

热门标签

归档