Ich habe ein Symfony3-Projekt, das mehreren Administratoren/Mandanten die Erstellung benutzerdefinierter Formulare für ihre Benutzer erleichtert. TenantData
ist die Haupteinheit, die die Felder Anrede, Vorname und Nachname enthält. Basierend auf dieser Entität kann der Mandant/Administrator ein Formular TenantDataType
erstellen. Hier ist, was TenantDataType
wie folgt aussieht:Wie kann ich Administratoren erlauben, ein zusätzliches nicht zugeordnetes Feld einem Formular in Echtzeit hinzuzufügen (Symfony3)
<?php
namespace AppBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use AppBundle\Entity\TenantData;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
class TenantDataType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('firstname', TextType::class, array());
$builder->add('lastname', TextType::class, array());
$builder->add('title', ChoiceType::class, array(
'choices' => array(
'Ms' => true,
'Mr' => false,
),
));
$builder->add('save', SubmitType::class, array('label' => 'Submit'));
}
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults(array(
'data_class' => TenantData::class,
'csrf_protection' => true,
'allow_extra_fields' => true
));
}
}
Jetzt möchte ich das Admin in der Lage sein ein zusätzliches Feld hinzugefügt werden, ohne eine zusätzliche Spalte in der TenantData Einheit hinzufügen. Ein Ansatz, den ich kenne, besteht darin, eine MetaData
Tabelle zu erstellen, die die Felder label, datype, isrequired und ismultiple enthält. Basierend auf dieser Entität kann ich ein neues Formular mit dem Namen MetaDataType
erstellen. Damit der Administrator dieses Formular verwenden kann, um ein zusätzliches Feld zu erstellen. Dies bedeutet im Grunde, dass jeder Datensatz der MetaData-Tabelle die Details eines zusätzlichen Feldes enthält. Das Problem ist, wie verwende ich diese Datensätze, um die zusätzlichen Felder, die vom Admin/Tenant in Echtzeit hinzugefügt werden. Da ich eine neue Instanz von TenantData zu dem Zeitpunkt erstelle, zu dem ich das Formular rendere, gibt es zu der Zeit keine TenantData-ID, die die zugehörigen Zeilen MetaData
abrufen kann. Welche Beziehung muss ich herstellen, um die gewünschte Funktionalität zu erhalten?
Irgendwelche Ideen?
suchen Sie benutzerdefinierte Formular für admin admin/Mieter Unternehmen? –
@ MOHAMMED YASSINE Chabli Ja – utkarsh2k2
Ich werde dir ein Beispiel zeigen und sehen, ob diese Antwort auf Ihre Bedürfnisse. –