Symfony 3 从控制器内部的表单类更改提交标签



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

<?php
// src/AppBundle/Form/Type/CoffeeShopForm.php
namespace AppBundleFormType;
use SymfonyComponentFormAbstractType;
...
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('新名称值')更改名称字段的值;我的问题是我如何更改 SubmitType 字段的标签 - 我搜索了这个东西的文档,但我找不到它,如果我能重用这个表单真的很有帮助,因为我正在使用它来添加表单,然后用于编辑表单,基本上在 Zend Framework 中是可能的, 所以我认为在Symfony中也应该是可能的

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

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

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

有关详细信息,请参阅 http://symfony.com/doc/current/reference/forms/types/text.html#label。

最新更新