2017-04-06 3 views

答えて

0

かなり印刷されたJSONを編集すれば十分です。カスタムフォームフィールドとデータトランスフォーマを作成すると、JSONをテンプレートビューのフォームを印刷し、フォームが送信されるときにコンパクトな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' } 
以下に示す溶液を4

JSON形式フィールドタイプのSymfonyのディレクトリ構造及びシステムに基づいています

もっと複雑なエディタは同じ方法で作成できますが、おそらくウィジェットのオーバーライドテンプレートとカスタムスタイルに加えてjavascripts。

関連する問題