4

Symfony2、FOS User Bundle、Twitter Bootstrap をインストールしました。

次に、/app/Resources/FOSUserBundle/views/layout.html.twig テンプレートをセットアップして、FOSUserBundle をオーバーライドしてサイト テンプレートを使用します。

ホームページに /login へのリンクがあれば、すべて機能します。

ここで、ログイン フォームがメイン テンプレートの一部であるヒーロー テンプレートのようなテンプレートを実装したいと考えています。

私が持っている最も近いものは、メインテンプレートでこれを使用することです:

{% render controller("FOSUserBundle:Security:login") %}

メイン テンプレートを拡張しないようにレイアウト html をオーバーライドできますが、これにより /login からすべてのスタイルが削除されます

両方のシナリオを処理する方法はありますか?

4

2 に答える 2

13

あなたはほとんどそこにいました:)

render 関数を使用して、他のテンプレートにログイン フォームを含めることができます。

{% render controller("FOSUserBundle:Security:login") %}

... app/Resources/FOSUserBundle/views/Security/login.html.twig{% block fos_user_content %}を作成し、FOSUserBundle のlogin.html.twigにあるラッピングを省略して、フォームを直接返すようにするだけです。

{% 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 }}" />

    <label for="username">{{ 'security.login.username'|trans }}</label>
    <input type="text" id="username" name="_username" value="{{ last_username }}" required="required" />

    <label for="password">{{ 'security.login.password'|trans }}</label>
    <input type="password" id="password" name="_password" 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>

次に、テンプレートに合わせて調整します。

于 2013-06-16T13:05:45.880 に答える
0

Richard Miller の投稿は、私がやろうとしていたことを達成するのに役立ちました。

http://richardmiller.co.uk/2013/02/18/symfony2-ajax-and-full-page-templates/

{% extends app.request.attributes.get('partial')
     ? '::ajax-layout.html.twig'
     : '::full-layout.html.twig' %}

app.request.partial を動作させることができず、xmlRequest に基づく選択は理想的ではないと判断しました。

于 2014-03-23T22:30:21.870 に答える