一项属性多次提交

时间:2019-03-31 10:16:55

标签: symfony twig

我不知道如何使用tiwg在数据库中为一个属性创建拖车输入,我希望在我的树枝文件中像这样here is what i want

我试图在表单生成器中添加相同的输入时间,但是它不起作用

for c in data.columns[1:]:
    arr1 = data[c].values.astype(float).reshape(-1,1)
    #array for next processing
    print (arr1)

1 个答案:

答案 0 :(得分:0)

据我所知,您有多种选择:

使用数据转换器

这绝对是干净的解决方案,因此比其他解决方案更受欢迎。本质上,您将获得的部分数据转换为数组/对象(moisAnne),并使用它填充多个字段。

更长且可能更好的描述:https://symfony.com/doc/current/form/data_transformers.html(实际上是以下说明的补充)

  1. 首先,您创建一个具有两个字段mois和anne的新表单类型MoisAnneType

  2. 然后您创建一个数据转换器,将您的moisAnne变成一个数组['mois' => $mois, 'anne' => $anne](当然也包括反转)。

  3. 将原始表单的新表单类型用于moisAnne字段

  4. 在模板中,您可能不必显式呈现它,但是您也可以使用form.moisAnne.moisform.moisAnne.anne

扩展实体(廉价的数据转换器)

将getter和setter添加到使用数组进行通信的AppBundle\Entity\FicheFrais中:

public function getExpandedMoisAnne() {
    $mois = /** your code **/
    $anne = /** your code **/
    return ['mois' => $mois, 'anne' => $anne]; 
}
public function setExpandedMoisAnne(array $moisAnne) {
    $this->moisAnne = $moisAnne['mois'].$moisAnne['anne']; // or whatever
}

然后,您可以在表单生成器中使用

->add('mois', null, [
     'property_path' => 'expandedMoisAnne[mois]'
])
->add('anne', null, [
     'property_path' => 'expandedMoisAnne[anne]'
])

事件监听器

无论如何,我相信此选项非常脏,我敢肯定,可以使用FormEvent来添加不属于原始对象的未映射字段,并在事件侦听器/处理程序中进行数据转换。我强烈建议不要这样做。