2016-03-08 67 views
1

我試圖從一個源控制器加載一些方法(它爲我創建一個登錄表單)到另一個源控制器。Symfony登錄表單 - 致命錯誤:調用成員函數get()null

這裏是我的源SecurityController:

namespace ImmoBundle\Controller\Security; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use ImmoBundle\Entity\User; 
use ImmoBundle\Form\Type\LoginType; 

class SecurityController extends Controller 
{ 
    /** 
    * @Route("/login", name="login") 
    */ 
    public function loginAction(Request $request) 
    { 
     $parametersArray = $this->loadForm($request); 

     return $this->render(
      'ImmoBundle::Security/login.html.twig', 
      array(
       'login_form' => $parametersArray['form']->createView(), 
       'error'  => $parametersArray['error'], 
       'last_email' => $parametersArray['lastEmail'], 
      ) 
     ); 
    } 


    public function loadForm($request) 
    { 
     $user = new User(); 
     $form = $this->createForm(LoginType::class, $user); 
     $form->handleRequest($request); 
     $authenticationUtils = $this->get('security.authentication_utils'); 
     $error = $authenticationUtils->getLastAuthenticationError(); 

     $lastEmail = $authenticationUtils->getLastUsername(); 
     $parametersArray['form'] = $form; 
     $parametersArray['error'] = $error; 
     $parametersArray['lastEmail'] = $lastEmail; 

     return $parametersArray; 
    } 
} 

然後我定義我的源控制器作爲services.yml服務:

login_form_service: 
    class: ImmoBundle\Controller\Security\SecurityController 

我的目標控制器看起來是這樣的:

namespace ImmoBundle\Controller\Pages; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpFoundation\Request; 

class ListingPageController extends Controller 
{ 
    /** 
    * @Route("/id/{listingId}", name="idPage", requirements={ 
    *  "listingId": "\d+" 
    * }) 
    */ 
    public function loadIdAction($listingId, Request $request) 
    { 
     $yourController = $this->get('login_form_service'); 

     print_r($yourController->loadForm($request)); 

     return $this->render(
      'ImmoBundle::page.html.twig', 
      array() 
     ); 
    } 
} 

但不是排隊中的對象

print_r($yourController->loadForm($request))

我得到這個錯誤:Fatal error: Call to a member function get() on null

我在做什麼錯?

回答

1

您SecurityController註冊爲服務 「login_form_service」 不知道service_container

嘗試:

login_form_service: 
    class: ImmoBundle\Controller\Security\SecurityController 
    calls: 
     - [setContainer, [@service_container]] 
+0

謝謝你,它的工作原理! – rvaliev

相關問題