Я хочу войти на главную страницу вместо отдельного сайта. Когда я ввожу свои учетные данные в/логин, все в порядке, но оно не работает на/route.Symfony3: Форма входа не работает, если отображается на другом сайте
оказывает вход в форму с этой командой в base.html.twig (для целей тестирования я хочу сделать форму входа на каждой странице теперь):
{{ render(controller("AppBundle:Security:login")) }}
Вот мой login.html.twig:
{% if error %}
<div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
<form action="{{ path('login') }}" method="post">
<div class="form-group">
<input type="text" class="form-control" id="username" placeholder="Email" name="_username" value="{{ last_username }}" />
<input type="password" class="form-control" id="password" placeholder="Heslo" name="_password" />
</div>
<button type="submit" class="btn btn-success">Přihlásit</button>
<a href="/registration" class="btn btn-info" role="button">Registrovat</a>
</form>
И мой loginAction:
/**
* @return array
* @Route("/login", name="login")
* @Template()
*/
public function loginAction()
{
$authenticationUtils = $this->get('security.authentication_utils');
// get error
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
return [
'last_username' => $lastUsername,
'error' => $error
];
}
И secured_area в security.yml:
secured_area:
pattern: ^/
anonymous: ~
provider: main
form_login:
login_path: login
check_path: login
logout:
path: /logout
target:/
Форма входа в систему находится на начальной странице. Но ничего не происходит, когда я вводим учетные данные и нажимаю кнопку. Может быть, потому, что кнопка пытается найти форму в действии, определенную для главной страницы, а не действие, определенное для страницы входа?
Есть ли опция «принудительно» использовать кнопку вместо исходного (логина)?
Благодарим за ответы.
Спасибо. Я действительно новичок в symfony, и я не знаю, как отправить форму на check_path. Я обновил свой вопрос - добавлена часть security.yml. Должен ли я создать другую страницу для check_path? Можете ли вы привести пример о том, как заставить все работать? Спасибо –
Я прочитал ваш ответ еще раз. Означает ли это, что расширение безопасности должно заботиться о регистрации? Может быть, линия контроллера вывода вызывает ошибку? Когда я нажимаю кнопку для ведения журнала, ничего не происходит. Кнопка должна перенаправить меня в/login, если логин завершится неудачно, я прав? Я вижу, что кнопка отправки не имеет параметров. Когда я визуализую форму на другой странице, чем/логин, как symfony может знать, что это кнопка для ведения журнала? –
Вы, кажется, используете тот же маршрут для login_path, что и check_path. Вы должны создать новый маршрут для check_path с другим URL-адресом. Затем в теге формы вы должны создать URL-адрес пути проверки для свойства action. – Gerry