php创建姓名信息数组,php – 表单构建器中的关联数组字段 – Symfony3

本文介绍了如何在Symfony中使用json_array字段类型来处理表单,通过定义实体类中的键并设置property_path,使得Symfony能够自动处理JSON数据的编码和解码。在表单构建时,详细展示了如何为每个JSON键添加表单字段,并在Twig模板中展示数据。作者还探讨了在JSON与实体之间做选择时,可能考虑采用EAV模式。
摘要由CSDN通过智能技术生成

几天后,我找到了自己问题的答案.赏金并没有帮助它更快,但嘿,有一个解决方案! ; O)

事实证明它非常简单.我实际上并没有在这个特定问题上找到很多东西,所以如果你需要类似的东西,这里就是.

在具有此json_array的实体类中,定义所有需要的键,如下所示:

/**

* @var array

*

* @ORM\Column(name="questionnaire", type="json_array", nullable=true)

*/

private $questionnaire = [

'favPet'=>'',

'favFood'=>'',

'favColor'=>''

];

/**

* @param FormBuilderInterface $builder

* @param array $options

*/

public function buildForm(FormBuilderInterface $builder, array $options)

{

$builder

->add('name')

->add('email', EmailType::class)

->add('phone')

->add('address')

->add('favPet',TextType::class,[

'label'=>'Fav pet',

'property_path'=>'questionnaire[favPet]'

])

->add('favFood',TextType::class,[

'label'=>'Fav food',

'property_path'=>'questionnaire[favFood]'

])

->add('favColor',TextType::class,[

'label'=>'Fav color',

'property_path'=>'questionnaire[favColor]'

])

;

}

而symfony将处理剩下的事情.因为我们使用json_array作为类型,symfony将处理json_encode / json_decode事物.为了让symfony在编辑模式下映射/填充值,属性必须定义它的键.否则你会收到错误:

PropertyAccessor requires a graph of objects or arrays to operate on, but it found type “NULL” while trying to traverse path

然后在twig模板中你可以这样做:

{{ user.questionnaire.favPet }}

就是这样! :O))

至于JSON或实体.我知道我没有写任何实体,但我没有下定决心.经过一些IRC对话,阅读和https://stackoverflow.com/a/4013207/531099我可能会选择EAV.因此,如果您在JSON与实体之间做出决定,请将EAV添加到比赛中.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值