gpt4 book ai didi

Symfony2 : Set label of checkbox from Class Field

转载 作者:行者123 更新时间:2023-12-02 21:24:35 24 4
gpt4 key购买 nike

我有一个包含 3 个字段的类:

$id, $name, $isChecked

我有一个表单类型,我希望 $id 字段的标签是 $name 字段。这可能吗?

/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('id')
->add('name')
->add('is_checked', 'checkbox', array(
'required' => false,
'label' => //This should be the $name field
))
;
}

例如,我的类(class) $id = 1,$name=“Car”。然后我想要这样的:

/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('id')
->add('name')
->add('is_checked', 'checkbox', array(
'required' => false,
'label' => 'Car',
))
;
}

--> “Car”一词应该是我的类的 $name 变量。或者如何在我的 Twig/Form 中将整个类设置为复选框?我只希望我可以检查我的复选框,然后我知道,好的 "isChecked" 是 true,然后我就可以得到与我的 ID 和我的名字的关系。但用户需要知道哪个复选框是哪个值,所以我需要“名称”作为标签

最佳答案

Symfony 中有关于如何做到这一点的很好的文档 - 你想要做的是 modify the form based on the underlying data 。您要做的就是在 PRE_SET_DATA 上添加一个表单事件,该事件与起始数据一起使用。您的 buildForm() 函数现在如下所示:

use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('id')
->add('name')
;

$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$entity = $event->getData();
$form = $event->getForm();

// set default label if there is no data, otherwise use the name
$label = (!$entity || null === $entity ->getId())
? 'Default'
: $entity->getName()
;

$form->add('is_checked', 'checkbox', array(
'required' => false,
'label' => $label,
));
});
}

另一种方法是将实体数据传递到模板并在那里手动设置标签,但上述解决方案是更传统的方法。

关于Symfony2 : Set label of checkbox from Class Field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35079615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com