使用symfony表单编辑json_array字段

时间:2014-05-16 19:55:04

标签: json forms symfony textarea arrays

为了编辑实体的json_array symfony字段类型,我试图将其转换为带有表单中文本区域的可编辑字符串。

我创建了一个DataTransformer进行转换 JSONString< - >阵列

/**
 * Transform an array to a JSON string
 */
public function transform($array)
{
    return json_encode($array);
}

/**
 * Transform a JSON string to an array
 */
public function reverseTransform($string)
{
    return json_decode($string, true);
}

当我使用表单构建器创建表单时,我能够将数组转换为字符串,如下所示:

$builder->add($builder->create('info', 'textarea')->addModelTransformer(new ArrayToJSONStringTransformer()))

但是当我提交表单时,Symfony正在创建一个新实体,并且该字段将转换为空数组。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

您输入textarea的文本可能不是有效的JSON。尝试将文本复制到此工具中以验证语法:http://jsonlint.com/

我强烈建议您将一些验证集成到变压器中:

    public function reverseTransform($string)
    {
       $modelData = json_decode($string, true);
       if ($modelData == null) {
           throw new TransformationFailedException('String is not a valid JSON.');
       }

       return $string;
    }