2

Symfony 2テンプレートのドキュメントでは、メソッドを介してテンプレート内にコントローラーを埋め込むことを推奨してrender urlおり、次の例を示しています。

<div id="sidebar">
    {% render url('latest_articles', { 'max': 3 }) %}
</div>

これは問題ありませんが、ユーザーがURLに直接アクセスできないように、このルートをテンプレートにのみアクセスできるようにすることは可能です。その場合、推奨される方法は何ですか。

4

2 に答える 2

2

レンダリングしたすべてのコントローラー ルート パターンを "/_render/unique_name" として定義するか、"_render" を前に付けて access_control を使用して外部からのルートを保護することができます。

# app/config/security.yml
security:
    access_control:
        - { path: ^/_render, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
        - { path: ^/_render, roles: ROLE_NO_ACCESS }
于 2013-01-17T13:38:50.893 に答える
0

このメソッドのルートを定義しないことで、これを行うことができます。

class TestController extends Controller
{
    /**
     * @Route("/", name="index")
     * @Template
     */
    public function indexAction()
    {

        return array();
    }

    /**
     * @Template
     */
    public function testAction()
    {
        return array(
            'text' => 'This text is being included'
        );
    }
}

そして、テンプレートで

{% extends "::base.html.twig" %}

{% block body %}
    <h1>{{ hello }}</h1>

    {% render "TestBundle:Test:test" %}

{% endblock %}
于 2013-01-17T09:19:45.147 に答える