【问题标题】:Symfony 3 Changing a Submit label from a Form class inside of controllerSymfony 3 从控制器内部的表单类更改提交标签
【发布时间】:2016-04-25 20:38:20
【问题描述】:

所以我有一个在它自己的类中创建的表单:

<?php
// src/AppBundle/Form/Type/CoffeeShopForm.php
namespace AppBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
...

class CoffeeShopType extends AbstractType
{
   public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', TextType::class)
        ...
        ->add('save', SubmitType::class, array('label' => 'Create a coffee shop'))
        ->getForm();
    ;
}

}

然后我在一个控制器中使用它

/**
 * @Route("/admin/edit/{coffee_shop_id}")
 */
public function editCoffeeShopAction(Request $request, $coffee_shop_id)
{

    $repository = $this->getDoctrine()->getRepository('AppBundle:CoffeeShop');

    $coffeeshop = $repository->find($coffee_shop_id);

    $form = $this->createForm(CoffeeShopType::class, $coffeeshop);

    $form->get('name')->setData('New name value');

    $form->handleRequest($request);

    return $this->render('AppBundle:CoffeeController:edit_coffee_shop.html.twig', array(
        'form' => $form->createView(),
    ));
}

因此,在控制器中,您可能会看到我可以使用 $form->get('name')->setData('New name value'); 更改名称字段的值; 我的问题是如何更改 SubmitType 字段的标签 - 我搜索了这个东西的文档但我找不到它,如果我可以重用这个表单真的很有帮助,因为我将它用于添加表单然后是编辑表单,基本上在 Zend Framework 中是可能的,所以我认为在 Symfony 中也应该是可能的

【问题讨论】:

  • 非常感谢您的回答!我之前确实发现了这个。我的问题更多:是否不可能仅使用类似于 $form->get('name')->setData() 的东西来制作。像设置标签之类的东西,或者如果在 setData() 中存在特殊结构的参数用于提交的标签
  • 您可以使用的方法在这个问题的答案中:stackoverflow.com/questions/22893735/…

标签: php forms symfony


【解决方案1】:

我偶然发现了同样的问题,经过大量调试,我可以自信地说,你想做的事情是不可能的,至少在 Symfony 2.8 中是这样。

但是,您可以在呈现表单时设置另一个标签:

{{ form_row(form.name, { 'label': 'Test 123'}) }}

详情请见http://symfony.com/doc/current/reference/forms/types/text.html#label

【讨论】:

  • 我认为像这样在 Twig 中执行此操作更容易、更快且更易于维护。感谢分享。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多