为了编辑实体的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正在创建一个新实体,并且此字段将转换为空数组.
我应该怎么做 ?
最佳答案 您输入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;
}