new cookie php symfony fatal-error

php - cookie - error fatal de symfony2 no se puede volver a declarar la clase



symfony new response (6)

A veces, si se dejó seducir por copiar / pegar, verifique sus nombres de clase, espacios de nombres y otros "errores tipográficos" que podrían haber ocurrido. (copiar / pegar es el diablo de la programación: /)

Ok, he estado en esto por dos horas y veo que otras personas han tenido este error, pero parece que no puedo relacionar sus causas / resoluciones con las mías.

Error fatal: require () [function.require]: no se puede volver a declarar la clase companycontroller en /var/www/biztv_symfony/vendor/symfony/src/Symfony/Component/ClassLoader/DebugUniversalClassLoader.php en la línea 55

El terminal muestra un mejor mensaje de error que me señala la cláusula final de la clase real con la que informa que tiene problemas (al intentar redeclarar).

Si elimino o renombro el archivo companyController.php, se produce un error de Symfony2 que indica que fue a buscar la clase pero no la encontró donde se esperaba.

Si vuelvo a colocar el archivo en su lugar, Apache arroja un error de PHP que dice que la clase companyController no se puede volver a declarar.

Solo lo tengo una vez ?!

Aquí está toda la clase ... si alguien tiene paciencia para intentar ayudarme ...

<?php use Symfony/Bundle/FrameworkBundle/Controller/Controller; use BizTV/BackendBundle/Entity/company; use BizTV/BackendBundle/Form/companyType; /** * company controller * */ class companyController extends Controller { /** * Lists all company entities. * */ public function indexAction() { $em = $this->getDoctrine()->getEntityManager(); $entities = $em->getRepository(''BizTVBackendBundle:company'')->findAll(); return $this->render(''BizTVBackendBundle:company:index.html.twig'', array( ''entities'' => $entities )); } /** * Finds and displays a company entity. * */ public function showAction($id) { $em = $this->getDoctrine()->getEntityManager(); $entity = $em->getRepository(''BizTVBackendBundle:company'')->find($id); if (!$entity) { throw $this->createNotFoundException(''Unable to find company entity.''); } $deleteForm = $this->createDeleteForm($id); return $this->render(''BizTVBackendBundle:company:show.html.twig'', array( ''entity'' => $entity, ''delete_form'' => $deleteForm->createView(), )); } /** * Displays a form to create a new company entity. * */ public function newAction() { $entity = new company(); $form = $this->createForm(new companyType(), $entity); return $this->render(''BizTVBackendBundle:company:new.html.twig'', array( ''entity'' => $entity, ''form'' => $form->createView() )); } /** * Creates a new company entity. * */ public function createAction() { $entity = new company(); $request = $this->getRequest(); $form = $this->createForm(new companyType(), $entity); $form->bindRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getEntityManager(); $em->persist($entity); $em->flush(); /* Create adminuser for this company to go along with it */ $userManager = $this->container->get(''fos_user.user_manager''); $user = $userManager->createUser(); //make password (same as username) $encoder = $this->container->get(''security.encoder_factory'')->getEncoder($user); //get encoder for hashing pwd later $tempPassword = $entity->getCompanyName(); //set password to equal company name //Get company $tempCompanyId = $entity->getId(); //get the id of the just-inserted company (so that we can retrieve that company object below for relating it to the user object later) $tempCompany = $em->getRepository(''BizTVBackendBundle:company'')->find($tempCompanyId); //get the company object that this admin-user will belong to $user->setUsername($entity->getCompanyName() . "/admin"); //set username to $company/admin $user->setEmail(''admin.''.$entity->getCompanyName().''@example.com''); //set email to non-functioning (@example) $user->setPassword($encoder->encodePassword($tempPassword, $user->getSalt())); //set password with hash $user->setCompany($tempCompany); //set company for this user $user->setConfirmationToken(null); //we don''t need email confirmation of account $user->setEnabled(true); //without a confirmation token, we of course also need to flag the account as enabled manually $user->addRole(''ROLE_ADMIN''); $userManager->updateUser($user); return $this->redirect($this->generateUrl(''company_show'', array(''id'' => $entity->getId()))); } return $this->render(''BizTVBackendBundle:company:new.html.twig'', array( ''entity'' => $entity, ''form'' => $form->createView() )); } /** * Displays a form to edit an existing company entity. * */ public function editAction($id) { $em = $this->getDoctrine()->getEntityManager(); $entity = $em->getRepository(''BizTVBackendBundle:company'')->find($id); if (!$entity) { throw $this->createNotFoundException(''Unable to find company entity.''); } $editForm = $this->createForm(new companyType(), $entity); $deleteForm = $this->createDeleteForm($id); return $this->render(''BizTVBackendBundle:company:edit.html.twig'', array( ''entity'' => $entity, ''edit_form'' => $editForm->createView(), ''delete_form'' => $deleteForm->createView(), )); } /** * Edits an existing company entity. * */ public function updateAction($id) { $em = $this->getDoctrine()->getEntityManager(); $entity = $em->getRepository(''BizTVBackendBundle:company'')->find($id); if (!$entity) { throw $this->createNotFoundException(''Unable to find company entity.''); } $editForm = $this->createForm(new companyType(), $entity); $deleteForm = $this->createDeleteForm($id); $request = $this->getRequest(); $editForm->bindRequest($request); if ($editForm->isValid()) { $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl(''company_edit'', array(''id'' => $id))); } return $this->render(''BizTVBackendBundle:company:edit.html.twig'', array( ''entity'' => $entity, ''edit_form'' => $editForm->createView(), ''delete_form'' => $deleteForm->createView(), )); } /** * Deletes a company entity. * */ public function deleteAction($id) { $form = $this->createDeleteForm($id); $request = $this->getRequest(); $form->bindRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getEntityManager(); $entity = $em->getRepository(''BizTVBackendBundle:company'')->find($id); if (!$entity) { throw $this->createNotFoundException(''Unable to find company entity.''); } $em->remove($entity); $em->flush(); } return $this->redirect($this->generateUrl(''company'')); } private function createDeleteForm($id) { return $this->createFormBuilder(array(''id'' => $id)) ->add(''id'', ''hidden'') ->getForm() ; } }


Al igual que en otras respuestas, en mi caso, he cambiado el nombre de la clase pero no del archivo que lo contiene. Cada clase debe ser declarada en un archivo con el mismo nombre. Así que comprueba eso, también.


En mi caso, fue una declaración de use bajo el espacio de nombres que utilizó el mismo nombre de clase (pero otra ruta).

namespace Bsz/RecordTab; use /Bsz/Config/Libraries; // I used this in constructor class Libraries { ... }

Sin la directiva de uso, funcionó.


Personalmente, juste eliminado caché manualmente y funcionó

rm -rf app/cache/*

Borrar el caché no estaba arreglando mi problema.


Por lo tanto, resulta que fue un error tipográfico por Moi allí.

Pero para cualquier otra persona que se encuentre con este mensaje de error en Symfony2:

Error grave: require () [function.require]: no se puede volver a declarar la clase ...

Aquí hay una sugerencia: verifique si ha eliminado o tipificado accidentalmente el espacio de nombres en el archivo que contiene la definición de la clase que php afirma que está tratando de redefinir.

El mensaje de error de php realmente no te da una pista para buscar eso ... =)


redeclare class - Probablemente hay clases de arrastre con el mismo nombre