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

[SOLUCIONADO] Errores generales

Estas en el tema de Errores generales en el foro de Symfony en Foros del Web. Mientras intentaba hacer funcionar el FOSUserBundle, me encontre con estos errores dejo esto por si a alguien mas le sirve 1) @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: ...
  #1 (permalink)  
Antiguo 25/03/2013, 01:53
Avatar de fhederico  
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 23
Errores generales

Mientras intentaba hacer funcionar el FOSUserBundle, me encontre con estos errores dejo esto por si a alguien mas le sirve

1)

Código HTML:
Ver original
  1. The target-entity Goma\TestBundle\Entity\Color_cabello cannot be found in 'Goma\TestBundle\Entity\Apariencia#color_cabello'.

Error por los nombres de las entidades con guion bajo, Symfony reemplaza o mejor dicho quita los guiones, asi que lo mejor es trabajar sin nombres con guion

EJ: "hola_amigo" debe quedar "holaAmigo"


2)

Código HTML:
Ver original
  1. Catchable Fatal Error: Argument 1 passed to Acme\DemoBundle\Entity\Candidato::setEstadoid() must be an instance of Acme\DemoBundle\Entity\Estado, integer given, called in C:\wamp\www\prueba\src\Acme\DemoBundle\Controller\RegistrationController.php on line 36 and defined in C:\wamp\www\prueba\src\Acme\DemoBundle\Entity\Candidato.php line 296

Estamos seteando un valor incorrecto, no se puede setear : $candidato->setCVestado(1); si el setter de Estado requiere una entidad.

Hay dos soluciones, la primera seria crear un objeto nuevo de esa entidad y setearle el valor deseado mediante el setter respectivo y pasarle este objeto.

Ej: $estado = new Estado();
$estado->setId(1);
$candidato->setCVestado($estado);

Y la otra es crear una referencia a ese objeto y setearle el valor deseado. En mi caso la tabla "Estados" tenia un valor autonumerico y un nombre, y necesitaba setearle un valor 1, que hacia referencia que estaba "Activo", asi que esta opcion me resulto perfecto

$estado = $em->getReference('Acme\DemoBundle\Entity\Estado', 1);
$entity->setEstadoid($estado);


3)

Código HTML:
Ver original
  1. FatalErrorException: Error: Call to undefined method AN\PortalBundle\Controller\RegistrationController::getDoctrine() in C:\wamp\www\moises\portalTrabajando\src\Acme\DemoBundle\Controller\RegistrationController.php line 49

Cuando estaba intentando personalizar el formulario de "RegistrationController", una vez validado requeria hacer el respectivo insert en la BD pero no podia instanciar Doctrine, asi que esta es la forma de hacerlo

$em = $this->container->get('doctrine')->getEntityManager();

Cabe mencionar que este archivo si hubiese extendido de "Controller":

Código HTML:
Ver original
  1. class RegistrationController extends Controller
  2. {}

No habria problemas en llamarlo de la forma normal

$em = $this->getDoctrine()->getManager();

Pero como estaba extendido de "BaseController", no estaba disponible este metodo

Código HTML:
Ver original
  1. class RegistrationController extends BaseController
  2. {}


4)



Código HTML:
Ver original
  1. Item "message" for "" does not exist in AcmeDemoBundle:Candidato:registro.html.twig at line 8

En mi caso esta plantilla extendia de "Layout.html.twig" y el error estaba en la plantilla "Layout.html.twig", lamentablemente Symfony en cuanto a las Plantillas Twig no es muy bueno dando los errores. A y el error era por una variable que no estaba bien definida, asi que la mejor manera es debugear el codigo, una excelente herramienta que ayuda a esto es ladybug-bundle muestra los datos mucha mas legibles, es como "var_dump" pero mas "bonito" graficamente


5)

Código HTML:
Ver original
  1. Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken::serialize() must return a string or NULL

En las Entidades, tus propiedades fueron definidas como "private", debes definirlas como "protected"

FUENTE:

http://www.metod.si/symfony2-error-usernamepasswordtokenserialize-must-return-a-string-or-null

Última edición por fhederico; 10/04/2013 a las 21:00

Etiquetas: errores
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 21:18.