Usando formas de Symfony sin una entidad de base de datos -- php campo con form campo con symfony3 camp codereview Relacionados El problema

Using Symfony forms without a database entity


2
vote

problema

Español

He estado desarrollando una solicitud basada en Symfony 3, y parte de esa aplicación implica un proceso de importación donde un usuario puede cargar archivos CSV. Una cosa que nunca he estado tan seguro de con Symfony está utilizando el componente de formularios sin una entidad de base de datos para sujetarla. En el pasado, generalmente he usado una matriz para mantener los datos del formulario, pero esto siempre se siente impropio. Esta vez decidí intentar construir una clase de entidad para basar el formulario, a pesar de que no tiene asignación a nada en la base de datos.

Esta es la entidad que creé. Además de definir los campos para el formulario, también configuré la validación para asegurar que al menos uno de los campos haya sido poblado.

  class StudentImportFiles {     /** @var File */     private $studentList;     /** @var File */     private $transferList;     /** @var File */     private $enrollmentList;      public static function loadValidatorMetadata(ClassMetadata $metadata){         $metadata->addConstraint(new Callback(function(self $self, ExecutionContextInterface $context){             if (!($self->studentList || $self->transferList || $self->enrollmentList)){                 $context->addViolation('At least one import file must be selected');             }         }));     }      public function getStudentList(){         return $this->studentList;     }      public function setStudentList($studentList){         $this->studentList = $studentList;          return $this;     }      public function getTransferList(){         return $this->transferList;     }      public function setTransferList($transferList){         $this->transferList = $transferList;          return $this;     }      public function getEnrollmentList(){         return $this->enrollmentList;     }      public function setEnrollmentList($enrollmentList){         $this->enrollmentList = $enrollmentList;          return $this;     } }   

Este es el tipo de forma que creé. Simplemente se mapea a la entidad anterior y garantiza que sea válida.

  99887766555443310  

¿Es este uso adecuado del componente de formularios para tal escenario? ¿Hay alguna mejoras que puedan hacerse?

Original en ingles

I've been developing an application based on Symfony 3, and part of that application involves an import process where a user can upload csv files. One thing that I've never been too sure about with symfony is using the forms component without a database entity to attach it too. In the past I've typically just used an array to hold the form data, but this always felt improper. This time I decided to try building an entity class to base the form on, even though it has no mapping to anything in the database.

This is the entity I created. In addition to defining the fields for the form I also setup validation to ensure at least one of the fields has been populated.

class StudentImportFiles {     /** @var File */     private $studentList;     /** @var File */     private $transferList;     /** @var File */     private $enrollmentList;      public static function loadValidatorMetadata(ClassMetadata $metadata){         $metadata->addConstraint(new Callback(function(self $self, ExecutionContextInterface $context){             if (!($self->studentList || $self->transferList || $self->enrollmentList)){                 $context->addViolation('At least one import file must be selected');             }         }));     }      public function getStudentList(){         return $this->studentList;     }      public function setStudentList($studentList){         $this->studentList = $studentList;          return $this;     }      public function getTransferList(){         return $this->transferList;     }      public function setTransferList($transferList){         $this->transferList = $transferList;          return $this;     }      public function getEnrollmentList(){         return $this->enrollmentList;     }      public function setEnrollmentList($enrollmentList){         $this->enrollmentList = $enrollmentList;          return $this;     } } 

This is the form type I created. It simply maps to the above entity and ensures it is valid.

class StudentImportFilesType extends AbstractType {     public function buildForm(FormBuilderInterface $builder, array $options){         $builder             ->add('studentList', FileType::class, [                 'required' => false             ])             ->add('transferList', FileType::class, [                 'required' => false             ])             ->add('enrollmentList', FileType::class, [                 'required' => false             ])         ;     }      public function configureOptions(OptionsResolver $resolver){         $resolver->setDefaults([             'data_class' => StudentImportFiles::class             , 'constraints' => [                 new Valid()             ]         ]);     } } 

Is this proper usage of the forms component for such a scenario? Are there any improvements that could be made?

        

Lista de respuestas


Relacionados problema

4  Todolista en Symfony 3  ( Todolist in symfony 3 ) 
Este pequeño proyecto se trata de trabajar con el objeto de la entidad de la doctrina y todo está funcionando bien. Este es mi primer proyecto en Symfony 3....

3  Symfony: Cifpt ID's On Postload Event  ( Symfony encrypt ids on postload event ) 
Estoy construyendo una aplicación que se está convirtiendo en algún tipo de plataforma de redes sociales. Necesito trabajar mucho con las entidades de ID en e...

2  Usando formas de Symfony sin una entidad de base de datos  ( Using symfony forms without a database entity ) 
He estado desarrollando una solicitud basada en Symfony 3, y parte de esa aplicación implica un proceso de importación donde un usuario puede cargar archivos ...

7  Construir un conjunto de interfaces de descanso utilizando el marco de Symfony  ( Build a set of rest interfaces using symfony framework ) 
Tengo un desafío técnico de una empresa, pero rechazan mi código y no estoy seguro de cómo hacer este desafío de una manera más eficiente, así que estoy aquí ...

2  Recomendaciones de prueba phpunit  ( Phpunit test recomendations ) 
Esta es mi primera prueba de phpunit con simulacros, para un proyecto SymFony 3. ¿Alguien puede darme algún consejo sobre este código? class CourierManager...

2  Muchas a muchas (n a m) relación sin insertar duplicación PHP  ( Many to many n to m relationship without insert duplication php ) 
Logré hacer muchos en muchos trabajos de relación correctamente usando MySQL, Doctrine 2 y Symfony 3.4. Cuando se inserta un nuevo elemento A que contiene 0...

3  Use un patrón para la validación de los campos  ( Use a pattern for fields validation ) 
Necesito validar los campos del usuario enviado por una API. Todos funcionan bien, pero el único problema es que no me gusta la solución no es una solución OO...

0  Función / Método para obtener columnas selectivas  ( Function method to get selective columns ) 
¿Es posible simplificar getRows() o está bien como lo es ahora? protected $container; public function __construct(ContainerInterface $container) { $t...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos