Symfony Framework Форма авторизации. Взаимодействие контроллер вид Аутентификация tutorial 5

returnt

19.01.2015

startSymfony

Symfony Framework Форма авторизации. Взаимодействие контроллер вид Аутентификация

В данном уроке рассмотрим создание своей формы авторизации не зависимой от инструментов Symfony. Для этого нам понадобится немного отредактировать дефолтный контроллер, с которого мы и будем создавать контроллер авторизации. Так же нам понадобится изменить маршрутизацию Symfony. Для чего откроем файл routing.yml который можно найти по умолчанию в директории ~\symfony\www\src\Login\LoginBundle\Resources\config\routing.yml в том случае если вы делаете всё по приведённому примеру. В нём нужно поместить следующий код:

  1. login_login_auth:
  2. pattern:  /auth
  3. defaults: { _controller: LoginLoginBundle:Auth:index }

Более подробно о организации кода маршрутизации можно посмотреть в обзоре ниже.

Теперь самое время сверстать небольшую форму входа, прежде создав файл вида авторизации ~\symfony\www\src\Login\LoginBundle\Resources\views\Auth\Auth.html.php

В нём помещаем следующий код:

<?php echo $username ?>
<form method="POST" action="">
    <label>Имя пользователя</label><input type="text" name="usname">
    <label>Пароль</label><input type="password" name="pass">
    <input type="submit" value="Вход">
</form>

И, конечно же, не забываем создать бизнес логику в контроллере:

public function indexAction(Request $request)
    {
        $username   = $request->get('usname');
        $password   = $request->get('pass');
        $em         = $this->getDoctrine()->getEntityManager();
        $repository = $em->getRepository('LoginLoginBundle:Users');
        $user       = $repository->findOneBy(array('userName' => $username, 'password' => $password));
        if ($user) {
            return $this->render('LoginLoginBundle:Auth:Auth.html.php', array('username' => $username));
        } else {
            return $this->render('LoginLoginBundle:Auth:Auth.html.php', array('username' => 'Error'));
        }
        return $this->render('LoginLoginBundle:Auth:Auth.html.php');
    }

Подробно организацию контроллера мы рассмотрели в обзоре ниже.

Вот и всё на данном этапе можно завершить работу с авторизацией, продолжим в следующем обзоре.