Twig:头部阻止来自不同控制器的控制

发布于 2025-01-04 10:09:18 字数 1196 浏览 2 评论 0原文

我使用 symfony 2.0.9。 base.html.twig的代码:

<html>
<head>
    <title>title</title>        
    {% block stylesheets %}
        <link href="{{ asset('css/main.css') }}" type="text/css" rel="stylesheet" />
    {% endblock %}        
    {% block javascript %}
    {% endblock %}
</head>
<body>
<div class="sidebar">{% block sidebar %}{% endblock %}</div>
<div class="content">{% block content %}{% endblock %}</div>            
</body>

我的捆绑包有自己的layout.html.twig,它由控制器扩展,例如带有动作showAction的PostController.php。

layout.html.twig 的代码

{% extends '::base.html.twig' %}
{% block stylesheets %}
    {{ parent() }}
    ...something
{% endblock %}
{% block navigation %}
    ...list of menus
{% endblock %}
{% block sidebar %}
    {% render "DevMyBundle:Page:sidebar" %}
{% endblock %}   

如何从 sidebar.html.twig 访问 base.html.twig 中的块“javascript”,该块由 PageController 在layout.html.twig中呈现,如下所示: {% render "DevMyBundle:Page:sidebar “ %} 或如何重新组织模板的结构。 做什么?:侧边栏中可能有更多块。每个块调用自己的js。如何?感谢您的提前。

更新:请大家帮忙。应该有一个简单的答案。我已经阅读了 twig 文档,但我是新手。如果我发布这个问题不正确,请问我。

I use symfony 2.0.9.
Code of base.html.twig:

<html>
<head>
    <title>title</title>        
    {% block stylesheets %}
        <link href="{{ asset('css/main.css') }}" type="text/css" rel="stylesheet" />
    {% endblock %}        
    {% block javascript %}
    {% endblock %}
</head>
<body>
<div class="sidebar">{% block sidebar %}{% endblock %}</div>
<div class="content">{% block content %}{% endblock %}</div>            
</body>

My Bundle have own layout.html.twig, which being extended by Controllers, for example PostController.php with action showAction.

Code of layout.html.twig

{% extends '::base.html.twig' %}
{% block stylesheets %}
    {{ parent() }}
    ...something
{% endblock %}
{% block navigation %}
    ...list of menus
{% endblock %}
{% block sidebar %}
    {% render "DevMyBundle:Page:sidebar" %}
{% endblock %}   

How can access to block 'javascript' in base.html.twig from sidebar.html.twig, which rendered by PageController like this in layout.html.twig: {% render "DevMyBundle:Page:sidebar" %} or How can i reorganize structure of my templating.
What for?: There are more blocks in sidebar may be. Each block call its own js. How? Thanks for advance.

Update: please, guys, help. There should be a simple answer. I have read twig docs, but im newbe in it. If i post this question not correctly, ask me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉薄对峙 2025-01-11 10:09:18

一种方法是将侧边栏 javascrpt 移动到它自己的模板。
在layout.html.twig 中有类似的东西

{% block sidebar %}
    {% render "ZaysoArbiterBundle:Test1\\Main:sidebar" %}
{% endblock %} 

{% block javascript %}
    {{ parent() }}
    <script>Some layout javascript</script>
    {% render "ZaysoArbiterBundle:Test1\\Main:sidebarjs" %}
{% endblock javascript %}

One way would be to move the sidebar javascrpt to it's own template.
Something like this in layout.html.twig

{% block sidebar %}
    {% render "ZaysoArbiterBundle:Test1\\Main:sidebar" %}
{% endblock %} 

{% block javascript %}
    {{ parent() }}
    <script>Some layout javascript</script>
    {% render "ZaysoArbiterBundle:Test1\\Main:sidebarjs" %}
{% endblock javascript %}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文