2017-04-06 66 views

回答

0

如果編輯漂亮打印的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。

相關問題