2016-05-30 86 views
0

我有一個簡單的抽象ApiController(從控制器擴展)類,其中我處理身份驗證。Symfony 2.8教條

protected function handleAuth(){ 
    $login = $this->request->getUser(); 
    $password = $this->request->getPassword(); 

    $user = $this->get('doctrine.orm.entity_manager'); 

    if (!$user) 
    { 
     return $this->sendResponse(array('msg'=>'User not found'),404); 
    } 
    $user = $user[0]; 

    if(!password_verify($data['password'], $user->getUserPass())){ 
     return $this->sendResponse(array('msg'=>'Invalid credentials'),401); 
    } 

    return true; 
} 

但它拋出,在我的抽象控制器越來越學說的erorr:

Error: Call to a member function get() on a non-object 
in vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php at line 391 

我怎麼能在我的抽象類得到的學說?

+0

您是否將抽象ApiController註冊爲服務? – RxV

回答

1

爲了使用$this->get(something.or.other),您的容器需要延伸ContainerAware,如果您只是extends Controller,它將自動執行。

從2.8開始,ContainerAware已棄用,贊成ContainerAwareTrait,但如果您的抽象控制器只是簡單地擴展Controller,那麼您不必擔心這一點。

+0

但這是一個問題,我的抽象類擴展控制器 – mikrafizik

+0

啊,請嘗試使用'$ this-> container-> get(...)'來代替。 – Alec

+0

它拋出一個錯誤 「$這個 - >容器=空」, 但我不明白爲什麼,因爲 '轉儲(get_class_method(0函數get_class($這個)));' 顯示get()方法 – mikrafizik