EAV (Entity-Attribute-Value) Моделирование данных / Пользовательские поля базы данных - PullRequest
0 голосов
/ 03 июня 2019

Я хотел бы создать настраиваемые поля Регистрация пользователей, Система входа в систему и управления профилями.

У меня несколько клиентов.Каждый клиент хочет использовать различные поля в форме регистрации, и выбор этих полей полностью зависит от клиента, это поведение будет таким же для профиля или страницы входа.

Я искал со вчерашнего дня библиотеку или пакеткоторый может выполнять эти операции.

Кто-нибудь имеет какое-либо представление об этом?

1 Ответ

0 голосов
/ 03 июня 2019

Лучшее решение, которое я могу придумать, - это создать «абстрактную» сущность, которая будет суммировать все поля, необходимые для данного клиента.

/**
** @ORM\Entity() 
*/
class RegistrationFormField {
    // ...
    /** @ORM\Column(type="string") **/
    private $fieldName;
    /** @ORM\Column(type="string") **/
    private $fieldType;
    /** @ORM\Column(type="boolean") **/
    private $required;
    /** @ORM\ManyToOne(targetEntity="App\Entity\Client") **/
    private $client;
    // ...
}

Я бы создал эту сущность со всеми обязательными полями, чтобы иметь возможность создать соответствующую регистрационную форму:

$fields = $em->getRepository(RegistrationFormField::class)->findBy(['client' => $client]);
$form = $this->createFormBuilder();
foreach ($fields as $field) {
    $form->add($field->getFieldName(), $field->getFieldType(), [
        'required' => $field->getRequired()
    ]);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...