простая форма входа с помощью symfony

Это мой контроллер

use Symfony\Component\HttpFoundation\Request; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\Security\Http\Authentication\AuthenticationUtils; class SecurityController extends Controller { /** * @Route("/login", name="login") */ public function loginAction(Request $request,AuthenticationUtils $authUtils) { // get the login error if there is one $error = $authUtils->getLastAuthenticationError(); // last username entered by the user $lastUsername = $authUtils->getLastUsername(); return $this->render('blog/login.html.twig', array( 'last_username' => $lastUsername, 'error' => $error, )); } } 

Это мой security.yml

  providers: our_db_provider: entity: class: AppBundle:user property: uname in_memory: memory: users: clement: password: $2y$12$Z2B4JTnglzaYs4z73DBh9u/hIDN/E56CCrLKIjQxP6Q7aeLb5S6LO roles: 'ROLE_ADMIN' admin: password: symfony roles: 'ROLES_ADMIN' ryan: password: ryan1234 roles: 'ROLES_USER' encoders: Symfony\Component\Security\Core\User\User: algorithm: bcrypt cost: 12 AppBundle\Entity\User: algorithm: bcrypt firewalls: # disables authentication for assets and the profiler, adapt it according to your needs dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: anonymous: ~ # activate different ways to authenticate # http://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate http_basic: ~ # http://symfony.com/doc/current/cookbook/security/form_login_setup.html form_login: login_path: login check_path: login secured_area: pattern: ^/ provider: our_db_provider anonymous: ~ logout: true access_control: # require ROLE_ADMIN for /admin* - { path: ^/admin, roles: ROLE_ADMIN } 

Это мое мнение

 <form action="{{ path('login') }}" method="post"> <label for="username">Username:</label> <input type="text" id="username" name="_username" value="{{ last_username }}" /> <label for="password">Password:</label> <input type="password" id="password" name="_password" /> {# If you want to control the URL the user is redirected to on success (more details below) <input type="hidden" name="_target_path" value="/account" /> #} <button type="submit">login</button> </form> 

И я получаю эту ошибку.

Контроллер «AppBundle \ Controller \ SecurityController :: loginAction ()» требует, чтобы вы указали значение аргумента «$ authUtils». Либо аргумент имеет значение NULL, ни нулевое значение не было предоставлено, значение по умолчанию не было предоставлено или из-за отсутствия необязательного аргумента после этого.

Это не правильный ответ на ваш вопрос, но возможное исправление

  1. подпись метода изменения для public function loginAction(Request $request)
  2. add $authUtils = $this->get('security.authentication_utils'); в начале вашего действия

Если в Symfony 3.3 эта функция не работает, вам необходимо:

  1. Включить автоподключение
  2. Отметьте свои контроллеры controller.service_arguments

Это, однако, значение по умолчанию в symfony, поэтому вам нужно только его изменить, если вы очистили / заменили default services.yml .

Если вы не хотите использовать autowire, вы можете явно определять типы аргументов .