【发布时间】: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/…