В настоящее время я использую доктрину неправильно, так как, когда у меня есть choiceType в моей сущности, я использую это:
/**
* @ORM\Column(type="integer")
*/
private $type;
плюс у моего строителя:
->add('type', ChoiceType::class, ['choices' => ['Pattern' => 0, 'Image' => 1]])
Я бы хотел иметь что-то более чистое и иметь в своей базе данных другую сущность, которая будет связана с этой основной сущностью. Вот что я сделал.
Создан объект категории (и создан в БД):
/**
* @ORM\Entity(repositoryClass="App\Repository\CategoryRepository")
* @ORM\Table(name="vipbox_mep_category")
*/
class Category {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $category;
/**
* @return mixed
*/
public function getCategory()
{
return $this->category;
}
/**
* @param mixed $category
*/
public function setCategory($category): void
{
$this->category = $category;
}
}
связал мою основную сущность со второй (с помощью метода получения и установки):
/**
* @ORM\OneToOne(targetEntity="App\Entity\Category")
*/
private $category;
Добавил мою категорию в мою форму:
->add('category', CategoryType::class, ['required' => true, 'label' => 'Category'])
Расширенная форма AbstractType для моей категории:
class CategoryType extends AbstractType
{
/**
* @var RouterInterface $route
*/
private $router;
/**
* @param RouterInterface $router
*/
public function __construct(RouterInterface $router)
{
$this->router = $router;
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'required' => true,
'label' => 'Category'
]);
}
/**
* {@inheritdoc}
*/
public function getParent()
{
return ChoiceType::class;
}
}
Заполнил мою таблицу категорий с текстовыми образцами данных (2 строки)
- Протестировано, чтобы показать мою форму, я вычисляю, но у меня есть пустой выборТип:
Я знаю, что пропустил одну / несколько вещей на моем пути, какие-нибудь подсказки?