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

clases con symfony

Estas en el tema de clases con symfony en el foro de Symfony en Foros del Web. buenas que esperon esten bien tengo un problemas y escribo a ver si me pueden ayudar uso symfony 1.0.19 en debian etch 4.0 el problemas ...
  #1 (permalink)  
Antiguo 10/04/2009, 17:40
 
Fecha de Ingreso: enero-2009
Mensajes: 141
Antigüedad: 15 años, 3 meses
Puntos: 1
clases con symfony

buenas que esperon esten bien tengo un problemas y escribo a ver si me pueden ayudar uso symfony 1.0.19 en debian etch 4.0 el problemas es el sig

intento aplicar la teoia de servicio por ello creo un documento con qe contiene lo sig

class Servicio_Insert {

public function hola() {
$this->titulo="hola";
return $this->titulo;
}
}

luego en el acctio.class.php hago la llamada asi

public function executeDocumentosAccion()
{
$cedula = $this->getRequestParameter('cedula');
$this->titulo=Servicio_Insert::hola();

}


y me sale este error

Fatal error: Class 'Servicio_Insert' not found in /var/www/sisbe/apps/app/modules/administrador/actions/actions.class.php on line 44

de anemano gracias por s ayuda
  #2 (permalink)  
Antiguo 10/04/2009, 22:44
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: clases con symfony

Para que puedas hacer esto $this->titulo=Servicio_Insert::hola();

El metodo hola tiene que ser estatico.
__________________
blog
  #3 (permalink)  
Antiguo 11/04/2009, 22:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: clases con symfony

y aparte de eso tienes que incluirla ya sea usando include() o require().

Saludos.
  #4 (permalink)  
Antiguo 17/04/2009, 08:25
 
Fecha de Ingreso: enero-2009
Mensajes: 141
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: clases con symfony

si efectivamente ese es el error no tenia las clase static pero asi lo hiceç

public static function consulta($cedula) {
Servicio_Consulta::muestraConsulta($cedula);

}
private static function muestraConsulta($cedula) {
$consultar= new Criteria(); // Se crea un objeto de tipo Criteria
$aspirante = AspirantePeer::doSelect($consultar); //consulta a la bd
$this->aspirante= $aspirante;

}

y me arroja este error
Fatal error: Using $this when not in object context in /var/www/sisbe/apps/app/modules/administrador/lib/servicio/consulta.class.php on line 13

otra vez gracias
  #5 (permalink)  
Antiguo 17/04/2009, 08:39
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: clases con symfony

Fijate en esta web

http://php.net/php5
__________________
blog
  #6 (permalink)  
Antiguo 17/04/2009, 08:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: clases con symfony

No puedes usar $this cuando usas una clase estatica, violas lo que es el encapsulamiento de una clase estatica.

Saludos.
  #7 (permalink)  
Antiguo 17/04/2009, 09:04
 
Fecha de Ingreso: enero-2009
Mensajes: 141
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: clases con symfony

entonces cuando hago un insert como este

public static function guardar() {
$aspirante = new Aspirante();
$aspirante->setId($this->getRequestParameter('cedula'));
$aspirante->setPNombre($this->getRequestParameter('p_nombre'));
$aspirante->setSNombre($this->getRequestParameter('s_nombre'));
$aspirante->setPApellido($this->getRequestParameter('p_apellido'));
$aspirante->setSApellido($this->getRequestParameter('s_apellido'));
$aspirante->save();
$mensaje='ingresaron';
return $mensaje;
}
}

no debo hacerlo static???
  #8 (permalink)  
Antiguo 17/04/2009, 09:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: clases con symfony

Pues eso lo que estas haciendo es creando una clase adentro de tu función static, eso sí es permitido, lo que no es permitido es usar $this dentro de una función static ya que no tiene valor.

Saludos.
  #9 (permalink)  
Antiguo 17/04/2009, 09:23
 
Fecha de Ingreso: enero-2009
Mensajes: 141
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: clases con symfony

pero haciendo eso me da nuevament el error y no tengo ni idea
  #10 (permalink)  
Antiguo 17/04/2009, 09:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: clases con symfony

Que error te marca?
  #11 (permalink)  
Antiguo 17/04/2009, 09:32
 
Fecha de Ingreso: enero-2009
Mensajes: 141
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: clases con symfony

listo me marcaba el mismo error

Fatal error: Using $this when not in object context in /var/www/sisbe/apps/app/modules/administrador/lib/servicio/consulta.class.php on line 13

la solucion es (claro cuando usas servicios) es asi en el action

public function executeValidar()
{
$params = $this->getRequest()->getParameterHolder()->getAll();
$this->mensaje=Servicio_Registro::recibir($params);
$this->redirect('registro/mensaje?mensaje=1');
}

y en el servicio

class Servicio_Registro {

public static function recibir($params) {

return Servicio_Registro::guardar($params);
}
private static function guardar($params) {
$aspirante = new Aspirante();
$aspirante->setId($params['cedula']);
$aspirante->setPNombre($params['p_nombre']);
$aspirante->setSNombre($params['s_nombre']);
$aspirante->setPApellido($params['p_apellido']);
$aspirante->setSApellido($params['s_apellido']);
$aspirante->save();
$mensaje='ingresaron';
return $mensaje;
}
}

asi no uso this y seteo los parametros para insertar


gracias pablofmorales y GatorV
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 08:38.