0
我有一个看起来像这样的数据表:如何编辑Easy Admin Bundle中的字段中的json数据?
,我在一些用户友好的形式想编辑JSON数据,而不是像这样:
这是可能做到这一点很快,只是为了改变一些参数?
我有一个看起来像这样的数据表:如何编辑Easy Admin Bundle中的字段中的json数据?
,我在一些用户友好的形式想编辑JSON数据,而不是像这样:
这是可能做到这一点很快,只是为了改变一些参数?
如果编辑漂亮打印的JSON足以满足您的需求,那么创建自定义表单域和数据转换器,将JSON格式化为漂亮的模板视图打印表单,并在提交表单时返回紧凑的JSON。下面示出的解决方案是基于的Symfony 4.
JSON表单字段类型的目录结构和系统:
<?php
namespace App\Form\Type;
use App\Form\DataTransformer\JsonToPrettyJsonTransformer;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
class JsonType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder->addViewTransformer(new JsonToPrettyJsonTransformer());
}
public function getParent()
{
return TextareaType::class;
}
}
数据变压器:
<?php
namespace App\Form\DataTransformer;
use Symfony\Component\Form\DataTransformerInterface;
class JsonToPrettyJsonTransformer implements DataTransformerInterface
{
public function transform($value)
{
return json_encode(json_decode($value), JSON_PRETTY_PRINT);
}
public function reverseTransform($value)
{
return json_encode(json_decode($value));
}
}
易于管理配置:
easy_admin:
entities:
EntityName:
class: App\Entity\EntityName
form:
fields:
# other fields
- { property: 'propertyName', type: 'App\Form\Type\JsonType' }
更复杂的编辑器可以以相同的方式创建,但可能重写widget模板和自定义样式加上javascripts。