私は本当に素晴らしい Symfony アプリケーションで FOSUserBundle を使用しています。別のテンプレートにログイン フォームと登録フォームがあります。両方を1つのテンプレートに並べて表示したい。
したがって、両方のテンプレートをオーバーライドするためにapp/Resources/FOSUserBundle/Security/login.html.twig
とを作成しました。app/Resources/FOSUserBundle/Registration/register.html.twig
ではlogin.html.twig
、レジスタ コントローラーを呼び出してそのテンプレートをレンダリングします。
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/Registration/register.html.twig:
{% include "FOSUserBundle:Registration:register_content.html.twig" %}
しかし、次のエラーが表示されます。
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
このエラー メッセージが表示される理由がわかりません。Security:login
andコントローラーを調べるとRegistration:register
、テンプレートはさまざまな方法でレンダリングされます。
$this->renderLogin(...
と
$this->container->get('templating')->renderResponse('FOSUserBundle:Registration:register.html....
だから基本的に私は2つの質問があります:
- エラー メッセージの意味と解決方法を教えてください。
- このアプローチは理想的ではないかもしれませんが、これに対するより良い解決策はありますか?