Symfony登录表单 — 致命错误:在null上调用成员函数get()


Symfony login form — Fatal error: Call to a member function get() on null

我正在尝试将某个方法(为我创建登录表单)从一个源控制器加载到另一个源控制器中。

这是我的源安全控制器:

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->加载表单($request))

我收到此错误:Fatal error: Call to a member function get() on null

我做错了什么?

注册为服务"login_form_service"的安全控制器不知道service_container

尝试:

login_form_service:
    class: ImmoBundle'Controller'Security'SecurityController
    calls: 
       - [setContainer, [@service_container]]