es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Symfony. Easy admin 3. Campo para tipo json con clave y valor editable.

Necesito ver, crear y editar claves y valores json en easyadmin. Desafortunadamente, solo puedo agregar valores. ¿Es posible mostrar y editar una clave y su valor?

Mi versión de easy admin: 3.5.16

Mi controlador Crud:

class TestCrudController extends AbstractCrudController {

public static function getEntityFqcn(): string
{
    return Test::class;
}

public function configureFields(string $pageName): iterable
{
    return [
        IdField::new('id')->hideOnForm(),
        TextField::new('name'),
        ArrayField::new('json'),
    ];
}

public function createEntity(string $entityFqcn)
{
   $test = new Test();

   $test->setJson([
       "Hight" => "134 mm",
       "Width" => "13 mm"
       ]);

   return $test;
}
}

Mostrado por easy admin.

Después de agregar uno nuevo elemento en el array. La clave tiene el valor “NaN”.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para mostrar y editar una clave y su valor en EasyAdmin, puedes hacer uso del KeyValueField proporcionado por el espacio de nombres EasyCorp\Bundle\EasyAdminBundle\Field. Este campo te permite ver, crear y editar claves y valores en un campo JSON o array. Puedes actualizar tu controlador TestCrudController para hacer uso de este campo de la siguiente manera:

    use EasyCorp\Bundle\EasyAdminBundle\Field\KeyValueField;
    
    class TestCrudController extends AbstractCrudController {
    
        //...
    
        public function configureFields(string $pageName): iterable
        {
            return [
                IdField::new('id')->hideOnForm(),
                TextField::new('name'),
                KeyValueField::new('json')
                    ->setFormTypeOptions([
                        'entry_options' => [
                            'value_type_options' => [
                                'attr' => [
                                    'class' => 'js-key-value-element',
                                ]
                            ]
                        ]
                    ])
            ];
        }
    
    }
    

    En el código anterior, el KeyValueField se utiliza para mostrar y editar el campo json en la entidad Test. El método setFormTypeOptions se utiliza para especificar la clase del elemento que muestra los pares clave-valor. Es importante incluir esta clase ya que la funcionalidad de JavaScript para agregar y eliminar pares clave-valor depende de ella.

    Una vez que hayas actualizado tu código, la página de EasyAdmin mostrará los pares clave-valor de la siguiente manera:

    EasyAdmin KeyValueField

    Como puedes ver, el KeyValueField te permite agregar, actualizar o eliminar claves y valores en el campo json directamente desde la página de EasyAdmin.

Comments are closed.