2013-07-01 6 views
0

발생 내가 가지고 그렇게처럼 내 번들 services.xml의 파일에 설정 3 개 간단한 컨트롤러 : 액세스 컨트롤러 서비스는 예외

http://symfony.com/schema/dic/services/services-1.0.xsd">

<parameters> 
    <parameter key="wsh_lapi.content.class">Wsh\LapiBundle\Controller\ContentController</parameter> 
    <parameter key="wsh_lapi.users.class">Wsh\LapiBundle\Controller\UserController</parameter> 
    <parameter key="wsh_lapi.alerts.class">Wsh\LapiBundle\Controller\AlertController</parameter> 
</parameters> 

<services> 
    <service id="wsh_lapi.content" class="%wsh_lapi.content.class%"> 
     <argument type="service" id="service_container"/> 
    </service> 
    <service id="wsh_lapi.users" class="%wsh_lapi.users.class%"> 
     <argument type="service" id="service_container"/> 
    </service> 
    <service id="wsh_lapi.alerts" class="%wsh_lapi.alerts.class%"> 
     <argument type="service" id="service_container"/> 
    </service> 
</services> 

하지만과 같이 AlertController에서 wsh_lapi.users 서비스를받을하려고하면

FatalErrorException : 오류 : 클래스 '심포니 \ 구성 요소 \ 디버그 \ 예외 \ ContextErrorE

class AlertController extends Controller { protected $container;

function __construct(Container $container) 
{ 
    $this->container = $container; 
} 

public function postAlert($appIdToken, $securityToken, $searchParams) 
{ 
    // first let see if user not allready registered 
    $em = $this->getDoctrine()->getManager(); 
    //$user = $this->container->get('wsh_lapi.users')->getUser($appIdToken, $securityToken); 
    if($this->container->has('wsh_lapi.users')) { 
     // this throws FatalErrorExecption 
     $userService = $this->container->get('wsh_lapi.users'); 
    } 
    // check if that alert does not exist allready 
    $alertRepo = $em->getRepository('WshLapiBundle:Alert'); 
    // todo: do checking 

    // create new alert object 
    $alert = new Alert(); 
    $alert->setUser($user); 
    $alert->setSearchQueryParams($searchParams); 
    $em->persist($alert); 
    $em->flush(); 

    return $alert; 

} 

}

나는 이상한 오류 xception '찾을 수 없습니다 /Users/bard/Projects/LavelAPI/src/Wsh/LapiBundle/Controller/UserController.php 줄 82

어떻게 해야할지 모르겠다. 82 줄은 UserController의 끝이고, 외모가있다. 같은 :

class UserController extends Controller { protected $container;

function __construct(Container $container) 
{ 
    $this->container = $container; 
} 

/** 
* Register new user or return existing one based on given AppId token 
* @param $appIdToken unique user token generated in client app 
* @return User 
*/ 
public function registerDevice($appIdToken) 
{ 
    // first let see if user not allready registered 
    $em = $this->getDoctrine()->getManager(); 
    $repo = $em->getRepository('WshLapiBundle:User'); 
    $user = $repo->findOneByAppId($appIdToken); 
    if(!$user) { 
     // user not found create new one 
     $user = new User(); 
     $user->setAppId($appIdToken); 
     $em->persist($user); 
     $em->flush(); 
    } 
    return $user; 

} 

/** 
* Removes user from database so he's token will no longer be authenticated 
* 
* @param $appIdToken 
* @param $securityToken 
* @return string 
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException 
*/ 
public function unRegisterDevice($appIdToken, $securityToken) 
{ 
    $user = $this->getUser($appIdToken, $securityToken); 
    $em = $this->getDoctrine()->getManager(); 

    $em->remove($user); 
    $em->flush(); 
    return "OK"; 
} 

public function getUser($appIdToken, $securityToken) 
{ 
    // first let see if user not allready registered 
    $em = $this->getDoctrine()->getManager(); 
    $repo = $em->getRepository('WshLapiBundle:User'); 
    $user = $repo->findOneByAppId($appIdToken); 
    if(!$user) { 
     throw $this->createNotFoundException('No user with appIdToken: '.$appIdToken.' has been found'); 
    } 
    // check security token 
    if(!$user->checkSecurityToken($securityToken)) { 
     throw new \Exception('Request not authorized. Tokens does not match'); 
    } 
    return $user; 
} 

}

답변

1

IT는 probles 내 wsh_lapi.users 서비스 컨트롤러 함수의 이름 "인 getUser"로라고 밝혀졌다. 아마 그것은 Symfony베이스 컨트롤러와 어떤 종류의 충돌이었을 것입니다. 단순히 함수 이름을 변경하면 작업을 시작합니다.