Foros del Web » Programando para Internet » PHP » Symfony »

Consuta FatalError

Estas en el tema de Consuta FatalError en el foro de Symfony en Foros del Web. Hola a todos, como andan?, Necesito ayuda, el problema que tengo es el siguiente: Cuando elimino una reserva ésta pasa a la lista de movimientos, ...
  #1 (permalink)  
Antiguo 14/11/2014, 01:01
 
Fecha de Ingreso: octubre-2014
Mensajes: 39
Antigüedad: 10 años, 1 mes
Puntos: 0
Pregunta Consuta FatalError

Hola a todos, como andan?,

Necesito ayuda, el problema que tengo es el siguiente:
Cuando elimino una reserva ésta pasa a la lista de movimientos, ahora el problema esta en ese pasaje; el error que me da es el siguiente:

"
FatalErrorException: Error: Call to a member function has() on a non-object in /opt/lampp/htdocs/aulas/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php line 198

in /opt/lampp/htdocs/aulas/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php line 198
"


Acá dejo el código para que lo veas y me digas que puede ser:

CÓDIGO DEL CONTROLADOR DE RESERVAS (esto se ejecuta cuando presiono el botón de eliminar la reserva):
public function deleteAction(Request $request, $id)
{
$form = $this->createDeleteForm($id);
$form->handleRequest($request);

//Esto no va nunca
//if ($form->isValid()) {

$em = $this->getDoctrine()->getManager();
//$entity = $em->getRepository('CrestaAulasBundle:Reserva')->find($id);
$idReserva = $em->getRepository('CrestaAulasBundle:Reserva')->find($id)->getId(); //tomo el id de la reserva para pasarlo para el alta de un movimiento


//echo($idReserva);

//esto de abajo esta comentado para para ver si en vardump me da los valores de $entity

/*if (!$entity) {
throw $this->createNotFoundException('Unable to find Reserva entity.');
}else{
//Si esta todo bien, cuando elimino una reserva, creo un objeto movimiento
$nuevoObjetoMovimiento = new MovimientoController();
//Llamo al metodo del objeto moviemiento para crear un movimiento

//El problema esta aca, en la invocacion del metodo
$nuevoObjetoMovimiento->newAction($id);

} */

if (!$idReserva) {
throw $this->createNotFoundException('Unable to find Reserva entity.');
}

//Si esta todo bien, cuando elimino una reserva, creo un objeto movimiento
$nuevoObjetoMovimiento = new MovimientoController();
//Llamo al metodo del objeto moviemiento para crear un movimiento
$nuevoObjetoMovimiento->newAction($idReserva);



$em->remove($entity);
$em->flush();
// } Esto no va nunca

return $this->redirect($this->generateUrl('aulas_reserva'));
}


CÓDIGO DEL CONTROLADOR DE MOVIMIENTOS:
<?php

namespace Cresta\AulasBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controll er;

use Cresta\AulasBundle\Entity\Movimiento;
use Cresta\AulasBundle\Form\MovimientoType;

use Cresta\AulasBundle\Entity\Reserva;
use Cresta\AulasBundle\Form\ReservaType;


/**
* Movimiento controller.
*
*/
class MovimientoController extends Controller
{


public function __construct () {
return $this;
}
....
....
....
}



Saludos.
  #2 (permalink)  
Antiguo 14/11/2014, 10:28
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Consuta FatalError

De entrada no puedes hacer esto o al menos no como esperas:
Código PHP:
Ver original
  1. //Si esta todo bien, cuando elimino una reserva, creo un objeto movimiento
  2. $nuevoObjetoMovimiento = new MovimientoController();
  3. //Llamo al metodo del objeto moviemiento para crear un movimiento
  4. $nuevoObjetoMovimiento->newAction($idReserva);
Si vas a trabajar de esa forma necesitas declarar tu controlador como servicio:
http://symfony.com/doc/current/cookb...r/service.html
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 14/11/2014, 13:30
 
Fecha de Ingreso: octubre-2014
Mensajes: 39
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Consuta FatalError

Muchas gracias, voy a intentar con eso.

Saludos.
  #4 (permalink)  
Antiguo 17/11/2014, 15:53
 
Fecha de Ingreso: octubre-2014
Mensajes: 39
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Consuta FatalError

Hola, tuve un pequeño avance... Hice las cosas como me mostraste en el tutorial pero ahora me da el siguiente error:

InvalidArgumentException: There is no extension able to load the configuration for "cresta.controller.movimiento.class" (in /opt/lampp/htdocs/aulas/src/Cresta/AulasBundle/DependencyInjection/../Resources/config/services.yml). Looked for namespace "cresta.controller.movimiento.class", found none


Los servicios en el "services.yml" los defini de la siguiente manera:

parameters:
cresta.controller.movimiento.class: Cresta\AulasBundle\Controller\MoviemientoControlle r
services:
cresta.movimiento.controller:
class: "%Cresta.controller.movimiento.class%"

Y el controller como esta definido en el primer mensaje...

Alguien sabe que es lo que me puede estar faltando?



Muchas gracias.
Saludos,
  #5 (permalink)  
Antiguo 17/11/2014, 21:26
 
Fecha de Ingreso: octubre-2014
Mensajes: 39
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Consuta FatalError

Hola Muchachos,

Defini como servicio de la siguiente manera en el app/config/config.yml

parameters:
nuevo_movimiento.class: Cresta\AulasBundle\Controller\MovimientoController
nuevo_movimiento.transport: idReserva

services:
nuevo_movimiento:
class: "%nuevo_movimiento.class%"
arguments: ["%nuevo_movimiento.transport%"]


y en mi controlador llamo de la siguiente manera:

public function deleteAction(Request $request, $id)
{
$form = $this->createDeleteForm($id);
$form->handleRequest($request);

//Esto no va nunca
//if ($form->isValid()) {

$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('CrestaAulasBundle:Reserva')->find($id);
$idReserva = $em->getRepository('CrestaAulasBundle:Reserva')->find($id)->getId(); //tomo el id de la reserva para pasarlo para el alta de un movimiento


//echo($idReserva);

//esto de abajo esta comentado para para ver si en vardump me da los valores de $entity

/*if (!$entity) {
throw $this->createNotFoundException('Unable to find Reserva entity.');
}else{
//Si esta todo bien, cuando elimino una reserva, creo un objeto movimiento
$nuevoObjetoMovimiento = new MovimientoController();
//Llamo al metodo del objeto moviemiento para crear un movimiento

//El problema esta aca, en la invocacion del metodo
$nuevoObjetoMovimiento->newAction($id);

} */

if (!$idReserva) {
throw $this->createNotFoundException('Unable to find Reserva entity.');
}


//Si esta todo bien, cuando elimino una reserva, creo un objeto movimiento
//$nuevoObjetoMovimiento = new MovimientoController();
//Llamo al metodo del objeto moviemiento para crear un movimiento
//$nuevoObjetoMovimiento->newAction($idReserva);
$soy_un_movimiento = $this->get('nuevo_movimiento');

$soy_un_movimiento->newAction($idReserva);


$em->remove($entity);
$em->flush();
// } Esto no va nunca

return $this->redirect($this->generateUrl('aulas_reserva'));
}


Para que ejecute el siguiente codigo de otro controlador:

public function newAction($idReserva)
{


//Llamo al manejador de entidades
$em = $this->getDoctrine()->getEntityManager(); die('llegue aca');
//Creo un repositorio para, que es un objeto, para manejar los datos.
$reservaEliminada = $em->getRepository('CrestaAulasBundle:Reserva')->find($idReserva); //Busco pasando como parametro el id de reserva



$entity = new Movimiento();
$form = $this->createCreateForm($entity);
$fechaDeHoy = date('now'); //Asigno la fecha del dia de la baja para pasarlo a la vista y mostrarlo
$entity->this->setFecha($fechaDeHoy);



return $this->render('CrestaAulasBundle:Movimiento:new.html.twi g', array(
'fecha' => $fechaDeHoy, //Paso la fecha de hoy para que se muestre en la vista
'reservaEliminada' => $reservaEliminada, //Paso la reserva eliminada para cargar los valores en la vista
'entity' => $entity, //Paso la entidad movimiento para cargar los valores del movimiento
'form' => $form->createView(),

));
}


Pero me sigue dando el siguiente error:

FatalErrorException: Error: Call to a member function has() on a non-object in C:\xampp\htdocs\aulas\vendor\symfony\symfony\src\S ymfony\Bundle\FrameworkBundle\Controller\Controlle r.php line 198


Saludos.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:22.