Symfony登录表单 - 致命错误:调用成员函数get()null
问题描述:
我试图从一个源控制器加载一些方法(它为我创建一个登录表单)到另一个源控制器。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
我在做什么错?
答
您SecurityController注册为服务 “login_form_service” 不知道service_container
尝试:
login_form_service:
class: ImmoBundle\Controller\Security\SecurityController
calls:
- [setContainer, [@service_container]]
谢谢你,它的工作原理! – rvaliev