Tôi đang sử dụng FOSUserBundle trong ứng dụng Symfony thực sự tuyệt vời. Họ có đăng nhập và đăng ký biểu mẫu trong một mẫu riêng biệt. Tôi muốn cả hai trong một mẫu để hiển thị chúng bên cạnh nhau.FOSUserBundle: Cách tích hợp tốt nhất đăng nhập và đăng ký biểu mẫu trong một mẫu?
Vì vậy, tôi đã tạo app/Resources/FOSUserBundle/Security/login.html.twig
và app/Resources/FOSUserBundle/Registration/register.html.twig
để ghi đè cả hai mẫu. Trong login.html.twig
Tôi gọi bộ điều khiển đăng ký để hiển thị mẫu của nó.
app/Resources/FOSUserBundle/Security/login.html.twig:
{% extends "FOSUserBundle::layout.html.twig" %}
{% trans_default_domain 'FOSUserBundle' %}
{% block fos_user_content %}
{% if error %}
<div>{{ error|trans }}</div>
{% endif %}
<form action="{{ path("fos_user_security_check") }}" method="post">
<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
<input type="text" id="username" name="_username" value="{{ last_username }}" placeholder="{{ 'security.login.username'|trans }}" required="required" />
<input type="password" id="password" name="_password" placeholder="{{ 'security.login.password'|trans }}" required="required" />
<input type="checkbox" id="remember_me" name="_remember_me" value="on" />
<label for="remember_me">{{ 'security.login.remember_me'|trans }}</label>
<input type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans }}" />
</form>
{{ render(controller('FOSUserBundle:Registration:register')) }}
{% endblock fos_user_content %}
app/Resources/FOSUserBundle/đăng ký/register.html.twig:
{% include "FOSUserBundle:Registration:register_content.html.twig" %}
Nhưng sau đó tôi nhận được lỗi sau:
FatalErrorException: Error: Maximum function nesting level of '100' reached, aborting! in /private/var/www/symfony/My_UserBundle/vendor/twig/twig/lib/Twig/Node/Expression/Array.php line 31
Tôi không biết tại sao tôi nhận được thông báo lỗi này. Nếu tôi nhìn vào bộ điều khiển Security:login
và Registration:register
, các mẫu được trả lại theo những cách khác nhau:
$this->renderLogin(...
và
$this->container->get('templating')->renderResponse('FOSUserBundle:Registration:register.html....
Vì vậy, về cơ bản tôi có hai câu hỏi:
- gì lỗi tin nhắn có nghĩa là gì và làm thế nào tôi có thể giải quyết nó?
- Có lẽ cách tiếp cận này không lý tưởng, có giải pháp nào tốt hơn cho điều này không?
âm thanh khá tốt. Nhưng vẫn còn một vấn đề chính còn lại: Bộ điều khiển đăng ký vẫn định tuyến đến các tuyến "/ đăng ký" được định cấu hình riêng của nó, đó không phải là tuyến đường tôi muốn. Làm thế nào tôi có thể ảnh hưởng đến điều này? Làm thế nào tôi có thể nói với anh ấy tôi muốn trở lại trang của tôi, nơi đăng nhập và đăng ký tồn tại bên cạnh nhau? Tôi nghĩ rằng nó không phải là giải pháp để thay đổi định tuyến của FOSUserBundle cho việc này. – tester
bằng cách này: '{% render url ('fos_user_security_login')%}' không hoạt động. Bạn có thể cho tôi biết tại sao? – tester
Bạn đã nhập tất cả các tuyến đường vào tệp định tuyến của riêng mình, tuyến đăng nhập phải ở trong đó làm cơ sở của thư mục đăng ký? Để tránh bị lộn xộn xung quanh với các bộ điều khiển, bạn có thể có '{% render url ('fos_user_security_login')%}' trong 'FOSUserBundle: Registration: register.html.twig' mặc dù điều này vẫn có nghĩa là biểu mẫu đăng nhập sẽ tuyến đường đến tuyến đăng nhập ban đầu khi cố gắng không thành công. Để làm điều đó đúng, tôi nghĩ bạn sẽ cần phải tùy chỉnh các bộ điều khiển đăng ký và bảo mật. – qooplmao