Я создаю генератор форм, используя Symfony 2.2 с Doctrine.
Мои сущности следующие:
- Форма
- Текст виджета
- ВиджетВыбрать
Все мои виджеты расширяют следующий класс:
/**
* Widget
*
* @ORM\MappedSuperclass
*/
abstract class Widget
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="Form", inversedBy="widgets")
*/
private $form;
/**
* @var string
*
* @ORM\Column(name="type", type="string", length=255)
*/
private $type;
/**
* @var integer
*
* @ORM\OneToOne(targetEntity="Question")
*/
private $question;
// getters and setters
}
Сущность моей формы выглядит так:
/**
* Form
*
* @ORM\Table(name="form")
* @ORM\Entity(repositoryClass="Ineat\FormGeneratorBundle\Entity\FormRepository")
* @UniqueEntity("name")
* @UniqueEntity("slug")
*/
class Form
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="slug", type="string", length=255)
*/
private $slug;
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="Widget", mappedBy="form")
*/
private $widgets;
public function __construct()
{
$this->widgets = new ArrayCollection();
}
// getters and setters
}
И один виджет:
/**
* Widget
*
* @ORM\Table(name="widget_choices")
* @ORM\Entity
*/
class WidgetChoices extends Widget
{
/**
* @var array
*
* @ORM\Column(type="array")
*/
private $choices;
// getters and setters
}
Всякий раз, когда я пытаюсь отобразить свою форму, у меня возникает следующая ошибка:
Ни свойство "WidgetText", ни метод "getWidgetText()", ни метод "isWidgetText()" не существуют в классе "Ineat\FormGeneratorBundle\Entity\Form"
Кажется, будто мои виджеты вообще не расширяли Widget. Мне нужен способ преобразовать мои виджеты в виджет или способ сообщить доктрине, что моя коллекция ArrayCollection может содержать все, что расширяет виджет.
Является ли это возможным?
WidgetText
у вас есть свойство$text
и общедоступный метод получения и установки, верно? - person cheesemacfly   schedule 16.05.2013