Symfony 控制器-类中无访问权限-实体
我收到了这个错误消息,但我真的不明白为什么Symfony 控制器-类中无访问权限-实体,symfony,doctrine-orm,symfony-forms,Symfony,Doctrine Orm,Symfony Forms,我收到了这个错误消息,但我真的不明白为什么 Neither the property "categories" nor one of the methods "addCategory()"/"removeCategory()", "setCategories()", "categories()", "__set()" or "__call()" exist and have public access in class "Checkout\Bundle\ItemBundle\Entity\Ite
Neither the property "categories" nor one of the methods "addCategory()"/"removeCategory()", "setCategories()", "categories()", "__set()" or "__call()" exist and have public access in class "Checkout\Bundle\ItemBundle\Entity\Item".
问题是,在我的实体“项目”中,我真的拥有所有这些东西:
/**
* @ORM\ManyToMany(targetEntity="Checkout\Bundle\ItemBundle\Entity\Category", mappedBy="items")
**/
private $categories;
及
好的,好的-我的控制器里有什么
/**
* Creates a new Item entity.
*
* @Route("/create", name="item_create")
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function createAction(Request $request)
{
$entity = new Item();
$currentUser = $this->getUser();
$form = $this->createFormBuilder($entity)
->add('name', null, array(
'label' => 'Item Name',
'required' => true,
))
->add('categories', 'entity', array(
'label' => 'Select a Category',
'required' => false,
'class' => 'CheckoutItemBundle:Category',
'property' => 'name',
'query_builder' => function (EntityRepository $er) use ($currentUser) {
return $er->createQueryBuilder('c')
->where('c.user = :user')
->setParameter('user', $currentUser);
},
))
->add('submit', 'submit', array('label' => 'Speichern'))
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
}
return $this->render(
'CheckoutItemBundle:Item:create.html.twig',
array(
'entity' => 'entity',
'form' => $form->createView()
)
);
}
所以,最大的问题是,为什么他说他没有找到它,而它显然在那里。有什么想法吗?提前谢谢你
->add('categories', 'entity', array(
'label' => 'Select a Category',
'required' => false,
'class' => 'CheckoutItemBundle:Category',
'property' => 'name',
'multiple' => true,
'query_builder' => function (EntityRepository $er) use ($currentUser) {
return $er->createQueryBuilder('c')
->where('c.user = :user')
->setParameter('user', $currentUser);
},
))
你有一个多对多的关系,但是你的表单需要一个多对一的关系。要修复此行为,需要将
multiple
设置为true
您的映射没有错误吗?您可以使用原则:模式:验证进行检查。这将确保不会像我怀疑的那样,让你的许多亲戚给你带来麻烦。谢谢你的快速反应和帮助。我已经检查了这方面,没有错误。:-)你清除缓存了吗?通过命令行或自己删除文件夹?我确实执行了app/console cache:clear
-错误仍然存在。然后尝试删除cache/dev
,最终删除cache/prod
文件夹。有时候这会有不同。是的,就是这样!谢谢!:-)
->add('categories', 'entity', array(
'label' => 'Select a Category',
'required' => false,
'class' => 'CheckoutItemBundle:Category',
'property' => 'name',
'multiple' => true,
'query_builder' => function (EntityRepository $er) use ($currentUser) {
return $er->createQueryBuilder('c')
->where('c.user = :user')
->setParameter('user', $currentUser);
},
))