在某些Company(实体)页面上,我显示了Categories公司可能拥有的几个(实体)。对于显示的每个类别,我都需要添加带有评分值的简单表单。所以我创建了实体 CalledRating并生成了RatingType. 现在我遇到了为每个显示的类别显示此表单的问题,我只能在第一次category出现时显示表单一次,但是在Rating表单中它无法获取id它应该连接的类别的名称(the )。
该Rating实体已定义Category并Company关联多对一 (@ORM)。
我将不胜感激如何处理。
我想诀窍在于控制器,所以下面是我的代码:
/**
* @Route("/catalog/{id}.html", name="card_show")
*/
public function cardShowAction(Company $company, Request $request)
{
$form = null;
// @TODO: add verification if user is logged on => if ($user = $this->getUser())
$rating = new Rating();
$rating->setCompany($company);
$form = $this->createForm(RatingType::class, $rating);
$form->handleRequest($request);
if ($form->isValid() && $form->isSubmitted()) {
$em = $this->getDoctrine()->getManager();
$em->persist($rating);
$em->flush();
$this->addFlash('success', "Your vote has been saved!");
return $this->redirectToRoute('card_show', array('id' => $company->getId()));
}
return $this->render("default/catalog/show.html.twig", array(
'card' => $company,
'form' => is_null($form) ? $form : $form->createView()
));
}
这是RatingType代码:
class RatingType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('comment')
->add('vote')
// ->add('userName')
// ->add('ip')
// ->add('createdAt')
->add('service')
// ->add('company')
;
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Rating'
));
}
}