[НАСТРОЙКА]
- Symfony 3.4
Box
сущность: ['id', 'name']
Item
сущность ['id', 'name', 'type']
type
: enum :: игрушка, открытка, конфета
BoxItem
объект: ['id', 'box_id', 'item_id']
- У каждого
Box
всегда есть один item
, у которого type
есть игрушка
- Каждый
Box
всегда имеет по одному item
, чья type
равна карточке
- Каждый
Box
может иметь ноль или более (0, n) item
, у которых type
равно , конфеты
[ПРОБЛЕМА И ФАЙЛЫ]
У меня есть OneToMany <=> ManyToOne
отношение между моими тремя сущностями, BoxItem
является средним.
Когда я сохраняю Box
, некоторые значения по умолчанию сохраняются в BoxItem
.
Моя проблема в том, что когда я хочу отредактировать данные в BoxItem
, я не могу понять, как получить нужные мне данные.
Мне нужен editAction()
, который мы назовем toyAction()
для редактирования текущей предварительно выбранной игрушки, и еще один для редактирования предварительно выбранной карты.
Конфеты просто добавляются или удаляются.
Может ли кто-нибудь дать мне пример того, как мне нужно написать toyAction()
, чтобы я мог получить единственный связанный с ним `item ['toy]' и изменить его?
Это мой текущий toyAction()
BoxItemController
/**
* @Route("boxitem-toy-{boxId}", name="boxitem_toy")
* @ParamConverter("boxItem", options={"box"="boxId"})
* @Method({"GET", "POST"})
*
* @param Request $request
* @param BoxItem $boxItem
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
*/
public function toyAction(Request $request, BoxItem $boxItem) {
$editForm=$this->createForm(BoxItemToyType::class, $boxItem);
if($request->isMethod('POST')) {
if($editForm->isSubmitted() && $editForm->isValid()) {
$this->getDoctrine()->getManager()->flush();
return $this->json(array('submit_status'=>true));
} else {
return $this->json(array('submit_status'=>false));
}
} else {
return $this->render('boxitem/toy.html.twig', array(
'boxItem'=>$boxItem,
'edit_form'=>$editForm->createView(),
));
}
}
Существуют как минимум две проблемы с текущим кодом.
Во-первых, в аннотации @ParamConverter
box
не распознается. Я предполагаю, что причина в том, что атрибут box
является отношением OneToMany <=> ManyToOne
, и поэтому я не использую правильный синтаксис. Я попытался box_id
вместо этого, но я все еще получаю ту же ошибку.
Исключение было сгенерировано во время рендеринга шаблона ("Неверные параметры переданы @ParamConverter: box").
Во-вторых, я ищу каждую запись с правом box_id
, мне нужно расширить поиск и присоединиться к Item
, чтобы получить единственную запись, для атрибута type
которой будет установлено значение игрушка и вернуть одну запись или ноль.