2015-01-15 4 views
3

symfony2의 FOSUser 번들 중 UserManager.php, 특히 updateUser 함수 (가장 마지막 버전의 프레임 워크와 프레임 워크의 마지막 버전이 있음)를 무시합니다.무한 루프 저장소 symfony2 fos 사용자 번들

<?php 
    /** 
    * Updates a user. 
    * 
    * @param UserInterface $user 
    * @param Boolean  $andFlush Whether to flush the changes (default true) 
    */ 
    public function updateUser(UserInterface $user, $andFlush = true, $form = false) 
    { 

     $this->updateCanonicalFields($user); 
     $this->updatePassword($user); 

     if ($form !== false) { 
      $em = $this->objectManager; 

      $user->setStatus($em->getRepository('BirdOfficeBundle:Status')->find(1)); 

      $language = $em->getRepository('BirdOfficeBundle:Language')->getLanguage(1); 

      echo '<pre>'; 
      var_dump($language);die(); 

      //$user->setLanguage($em->getRepository('BirdOfficeBundle:Language')->find(1)); 
      //$user->setType($em->getRepository('BirdOfficeBundle:Type')->find(1)); 

      echo '<pre>';var_dump($user);die(); 
     } 

     $this->objectManager->persist($user); 
     if ($andFlush) { 
      $this->objectManager->flush(); 
     } 
    } 
?> 

내가이 기능을 수행 할 것은 내 RegistrationController.php (registerAction 방법)에서 호출하는 것입니다 내 등록 양식의 제출 후 : 여기

은 (디버그 부품) 기능입니다. 내 상태를 설정하면

, 그것은 작동하고 잘 :

문제는 다음과 같다. 다른 저장소 (Langue, Type 등)에서 find 메소드를 사용하려고하면 웹 브라우저가 중단됩니다.

테스트 용으로 다른 컨트롤러에서 사용하려고했는데 잘 작동합니다.

그래서 문제가 될 수 있습니까?

그런데 findAll 또는 개인 쿼리를 사용하려고했지만 충돌이 발생합니다.

dev.log 파일을 확인했는데 event.ERROR이 없습니다.

+0

오류 로그를 확인하여 요청이 왜 실패했는지 확인 했습니까? – Scriptable

+0

흠, 네 말이 맞아, 그렇게해야 해. Symfony2 파일 (내부에 로그가있는 경우) 또는 MAMP Apache 로그를 검사해야합니까? –

+0

MAMP 아파치 로그와 Symfony 프로젝트에서 앱/로그 폴더를 확인하십시오. – Scriptable

답변

0

마지막으로 해결책을 찾았습니다. 내 기능 (getStatus, getLanguage, getType)에 대한 find() 호출을 제거하고 try/catch 호출을 내부에 넣습니다.

지금은 정말 좋습니다! , 나는 php app/console cache:clear

매우 감사 시작 그 후

<?php 

    $language = $em->getRepository('AcmeBundle:Language')->getLanguage(1); 
    if (is_null($language)) { 
     $language = 1; 
    } 
    $user->setLanguage($language); 

)

: 여기

Acme/AcmeBundle/Repository/LanguageRepository.php

<?php 

namespace Acme\AcmeBundle\Repository; 

use Doctrine\ORM\EntityRepository; 

class LanguageRepository extends EntityRepository 
{ 
    public function getLanguage($id) { 
     $db = $this 
       ->createQueryBuilder('l') 
       ->andWhere('l.id = :id') 
       ->setParameter('id', $id) 
     ; 

     try { 
      $language = $db->getQuery()->getSingleResult(); 
     } catch (\Doctrine\Orm\NoResultException $e) { 
      $language = null; 
     } 
     return $language; 
    } 
} 

에 대한 코드 그리고 내 UserManager.php 방법의 코드

가브리엘

관련 문제