php - generate - El repositorio de doctrinas de Symfony(findOneBy) result no es un objeto
findall symfony 3 (1)
Intento entender algún comportamiento extraño en el lado de Doctrine, por ejemplo:
Tengo un formulario simple y envío de parámetros en una solicitud al final crear formulario.
/**
* Displays a form to create a new Comment entity.
*
* @Route("/saveComment/", name="comment_new")
* @Method("POST")
* @Template()
*/
public function newAction(Request $request)
{
$entity = new Comment();
$form = $this->createCreateForm($entity, $request);
return array(
''entity'' => $entity,
''form'' => $form->createView(),
);
}
Ahora obtengo mis parámetros y trato de encontrar el objeto en la doctrina.
/**
* Creates a form to create a Comment entity.
*
* @param Comment $entity The entity
*
* @return /Symfony/Component/Form/Form The form
*/
private function createCreateForm(Comment $entity, Request $request)
{
$em = $this->getDoctrine()->getManager();
$commentForUserRequest = $request->request->get(''commentForUser'');
$commentForUser = $em->getRepository(''ApplicationSonataUserBundle:User'')->findOneBy(array(''username'' => $commentForUserRequest ));
$auctionRequest = $request->request->getInt(''auction'');
$auction = $em->getRepository(''AppBundle:Auction'')->find(1); // **ALL FINE**
$auction = $em->getRepository(''AppBundle:Auction'')->find($auctionRequest); //**PROBLEM**
$auction->addComment($entity);
$entity->setAuction($auction);
$form = $this->createForm(new CommentType(), $entity, array(
''action'' => $this->generateUrl(''comment_create''),
''method'' => ''POST'',
));
}
Cuando doy un número en lugar de mi parámetro de solicitud, todo funciona bien. El siguiente mensaje de error solo aparece para el segundo caso:
Error: Llamar a una función de miembro addComment () en un objeto no objeto
No entiendo lo que estoy haciendo mal.
Editar:
Y comment_create
/**
* Creates a new Comment entity.
*
* @Route("/comment/", name="comment_create")
* @Method("POST")
* @Template("AppBundle:Comment:new.html.twig")
*/
public function createAction(Request $request)
{
$entity = new Comment();
$form = $this->createCreateForm($entity, $request);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl(''comment_show'', array(''id'' => $entity->getId())));
}
return array(
''entity'' => $entity,
''form'' => $form->createView(),
);
}
$request->request->getInt(''auction'');
Esta línea verificará la variable de solicitud POST (NOT GET) ''auction''.
Puede usar la misma acción para generar y gestionar el envío de formularios.