Symfony2 - как создать форму на основе динамических параметров из базы данных? (EAV)

Я хотел бы создать форму на основе динамических параметров, которые хранятся в БД. Итак, я создал сущность под названием Параметр, которая определяет имя параметра, которое должно отображаться как метка поля формы.

/**
 * @ORM\Entity
 */
class Parameter
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
    /**
     * @ORM\Column(type="string", length="255")
     * @Assert\NotBlank()
     */
    protected $name; 
    /**
     * @ORM\OneToMany(targetEntity="ParameterValue", mappedBy="parameter")
     */
    protected $values;

Значения параметров для определенного объекта (объекта компании) будут сохранены в таблице ParameterValue.

/**
 * @ORM\Entity
 */
class ParameterValue
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
    /**
     * @ORM\ManyToOne(targetEntity="Parameter", inversedBy="values")
     * @ORM\JoinColumn(name="parameter_id", referencedColumnName="id", nullable=false)
     */
    protected $parameter;
    /**
     * @ORM\ManyToOne(targetEntity="Company", inversedBy="parameters")
     * @ORM\JoinColumn(name="company_id", referencedColumnName="id", nullable=false)
     */
    protected $company;

И, конечно, объект компании содержит атрибут параметров, который хранит только те параметры, которые были определены для компании.

/**
 * @ORM\Entity
 */
class Company
{    
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
    /**
     * @ORM\Column(type="string", length="255")
     */
    protected $name;
    /**
     * @ORM\OneToMany(targetEntity="ParameterValue", mappedBy="hotel")
     */
    protected $parameters;

Как создать форму, которая динамически извлекает все параметры из БД, создает текстовые поля с определенными метками (label = Parameter- > getName ()) и получает ParameterValues для параметров, которые уже были связаны с компанией (для действия редактирования)?

Я уже создал поле «collection», которое получает ParameterValues, но проблема в том, что я получаю форму с полями для параметров, которые использовались для компании, но не для других. И, конечно, я не могу получить метку, потому что тип поля коллекции ParameterType не Parameter.

-121--1440183- Рекомендации графического интерфейса пользователя для возможной согласованности? При использовании распределенной и масштабируемой архитектуры часто требуется возможная согласованность. Графически, как справиться с этой возможной последовательностью? Пользователи используют для нажатия кнопки «Сохранить» и просмотра...

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

Графически, как справиться с этой возможной непротиворечивостью?

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

Как работать с графическим интерфейсом для таких сценариев?

Обратите внимание, что данный вопрос относится как к настольным приложениям, так и к веб-приложениям.

PS: Я работаю с платформой Microsoft, но, думаю, вопрос относится к любой технологии...

14
задан shA.t 8 December 2015 в 05:36
поделиться