Symfony更新formType

时间:2017-11-15 05:46:36

标签: symfony symfony-forms

当我更新实体时,如何爆炸(拆分)TextAreaType的值? 我试过使用twig函数:split,nl2br,raw和symfony CallbackTransformer

但要么它没有改变,要么我有错误:An exception has been thrown during the rendering of a template ("Warning: implode(): Invalid arguments passed").

我该怎么办?感谢。

修改
实体类

 <?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Fournisseurs
 *
 * @ORM\Table(name="fournisseurs")
 * @ORM\Entity
 */
class Fournisseurs
{
    /**
     * @var string
     *
     * @ORM\Column(name="Nom", type="string", length=45, nullable=true)
     */
    private $nom;

    /**
     * @var string
     *
     * @ORM\Column(name="fournisseur", type="string", length=45, nullable=true)
     */
    private $fournisseur;

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;



    /**
     * Set nom
     *
     * @param string $nom
     *
     * @return Fournisseurs
     */
    public function setNom($nom)
    {
        $this->nom = $nom;

        return $this;
    }

    /**
     * Get nom
     *
     * @return string
     */
    public function getNom()
    {
        return $this->nom;
    }

    /**
     * Set fournisseur
     *
     * @param string $fournisseur
     *
     * @return Fournisseurs
     */
    public function setFournisseur($fournisseur)
    {
        $this->fournisseur = $fournisseur;

        return $this;
    }

    /**
     * Get abr
     *
     * @return string
     */
    public function getFournisseur()
    {
        return $this->fournisseur;
    }

    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    public function __toString()
    {
        return $this->fournisseur;
    }
}

form type

    $builder->add('nom')
            ->add('fournisseur');
    $builder->get('fournisseur')
        ->addModelTransformer(new CallbackTransformer(
            function ($fournisseurAsArray) {
                // transform the array to a string
                return implode(', ', $fournisseurAsArray);
            },
            function ($fournisseurAsString) {
                // transform the string back to an array
                return explode(', ', $fournisseurAsString);
            }
        ));

编辑格式化代码。如果有人可以提供帮助,请提前致谢

1 个答案:

答案 0 :(得分:0)

翻转两个功能:

$builder->get('fournisseur')
    ->addModelTransformer(new CallbackTransformer(
        function ($tagsAsArray) {
            // transform the array to a string
            return implode(', ', $tagsAsArray);
        },
        function ($tagsAsString) {
            // transform the string back to an array
            return explode(', ', $tagsAsString);
        }
    ));

请参阅文档中的this example