私は、複数の管理者/テナントが自分のユーザ用にカスタムフォームを作成することを容易にするSymfony3プロジェクトを持っています。 TenantData
は、挨拶、名字、姓フィールドを含む主要なエンティティです。このエンティティに基づいて、テナント/管理者はTenantDataType
というフォームを作成できます。ここでTenantDataType
は、次のようになります。管理者がフォームに余分なマッピングされていないフィールドをリアルタイムで追加する方法(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
));
}
}
今私は、管理者がTenantDataエンティティで余分な列を追加することなく、余分なフィールドを追加できるようにしたいです。私が知っている1つのアプローチは、ラベル、データ型、isrequiredとismultipleフィールドを含むMetaData
テーブルを作成することです。このエンティティに基づいて、私はMetaDataType
という名前で新しいフォームを作成できます。管理者がこのフォームを使用して余分なフィールドを作成できるようにします。これは、基本的には、MetaDataテーブルのすべてのレコードに余分なフィールドの詳細が含まれていることを意味します。問題は、これらのレコードを使用して、管理者/テナントによって追加された余分なフィールドをリアルタイムでレンダリングする方法です。私はフォームをレンダリングしているときにTenantDataの新しいインスタンスを作成しているので、関連するMetaData
行をフェッチできるTenantData IDはその時点では存在しません。必要な機能を得るためには、どのような関係を確立する必要がありますか。
アイデア?
あなたは管理者管理者/テナントエンティティのカスタムフォームに見ていますか? –
@ MOHAMMED YASSINE Chabliはい – utkarsh2k2
私はあなたに例を示して、あなたの必要性に答えるかどうかを見ます。 –