我正在尝试将某个方法(为我创建登录表单)从一个源控制器加载到另一个源控制器中。
这是我的源安全控制器:
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]]