Каким должно быть значение по умолчанию для $ security?

Я работаю над этим методом:

public function loginAction(Request $request, Security $security)
{
$session = $request->getSession();
$session->remove('admin_project_id');

if ($security->has(Security::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(Security::AUTHENTICATION_ERROR);
} else {
$error = $session->get(Security::AUTHENTICATION_ERROR);
$session->remove(Security::AUTHENTICATION_ERROR);
}

return $this->render('PDOneBundle:Login:index.html.twig',
array_merge($this->defaultViewParams(), array(
'last_username' => $session->get(Security::LAST_USERNAME),
'error'         => $error,
'include_sidebar' => false,
)
)
);
}

Но я получил эту ошибку, когда она называется:

контроллер
«GroupDCA \ PDOneBundle \ Controller \ LoginController :: loginAction ()» требует, чтобы вы указали значение для аргумента «$ security»
(потому что нет значения по умолчанию или потому что есть необязательный
аргумент после этого).

Каким должно быть значение по умолчанию для этого аргумента? Я правильно использую способ?

0

Решение

Прежде всего, вам не нужно передавать $ security в качестве аргумента. Строка, в которой вы используете безопасность, на самом деле вы должны получить доступ к $ request и посмотреть его атрибуты на наличие ошибки.

Во-вторых, я видел, что вы пометили вопрос как Symfony 2,7 и начиная с версии @ 2.6 был введен новый короткий способ входа в систему:

public function loginAction(Request $request)
{
$authenticationUtils = $this->get('security.authentication_utils');

// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();

// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();

return $this->render(
'security/login.html.twig',
array(
// last username entered by the user
'last_username' => $lastUsername,
'error'         => $error,
)
);
}

Вы можете прочитать больше, откуда был взят этот фрагмент кода: Как создать традиционную форму входа

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]