Я пытаюсь создать логин пользователя с помощью symfony 4 на основе учебника от symfony.com.
Я использовал основной файл services.yaml с кодом ниже.
https://symfony.com/doc/current/security/form_login_setup.html
public function loginAction(Request $request, \Twig_Environment $twigRenderer,AuthenticationUtils $authUtils)
{
// get the login error if there is one
$error = $authUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authUtils->getLastUsername();return new response($twigRenderer->render('security/login.html.twig', array(
'last_username' => $lastUsername,
'error' => $error,
)
));
}
Errror:
Контроллер «App \ Controller \ SecurityController :: loginAction ()» требует, чтобы вы указали значение для аргумента «$ authUtils». Либо аргумент имеет значение NULL, и значение NULL не было предоставлено, значение по умолчанию не было предоставлено, либо после этого есть необязательный аргумент.
Я не знаю, как решить это. У кого-нибудь есть предложение?
Я был с той же проблемой .. Попробуйте запустить команду:
composer require security
добавьте их в ваш services.yml, чтобы решить эту ошибку:
AppBundle\Controller\:
resource: '../../src/AppBundle/Controller'
public: true
tags: ['controller.service_arguments']
проверить этот вопрос:
простая форма входа в систему с использованием Symfony
надеюсь, это поможет.
Я немного опоздал, но все же добавлю сюда, чтобы другие могли сослаться.
Пожалуйста, добавьте autowire: true
в сервисную декларацию вашего контроллера. Symfony автоматически введет параметры методов для вас.
Решение для меня (с помощью Symfony 4.0) состояло в том, чтобы полностью пройти через шаги Документация по безопасности Symfony. Следуйте им всем, и, скорее всего, у вас все получится.
Я знаю, что мы не должны просто делиться ссылкой, но в этом случае нет конкретного шага, чтобы скопировать этот ответ, сделайте их все, чтобы получить правильный результат.
Вы должны проверить файл services.yml и убедиться, что ваш пакет помечен. В моем случае я получил пакет AdminBundle, и мой services.yml выглядит так:
AdminBundle\:
resource: '../../src/AdminBundle/*'
exclude: '../../src/AdminBundle/{Entity,Repository,Tests}'
AdminBundle\Controller\:
resource: '../../src/AdminBundle/Controller'
public: true
tags: ['controller.service_arguments']
пожалуйста, сделайте это, это работает для меня
$authUtils = $this->get('security.authentication_utils');