Symfony2 - 从子视图发送javascript到页面底部

时间:2015-12-18 04:58:36

标签: symfony twig

7.6我想在从base.html.twig加载的javsscripts后加载我的子视图中包含的javascript文件

例如,这是我的base.html.twig

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <!-- Meta, title, CSS, favicons, etc. -->
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Benerite | {% block page_title %}{% endblock %}</title>

        {% stylesheets
            'assets/bower_components/jquery-ui/themes/cupertino/jquery-ui.min.css'
            'assets/gentelella-master/css/bootstrap.min.css'
            filter='cssrewrite' output='css/compiled/app.css' %}
        <link rel="stylesheet" href="{{ asset_url }}" />
        {% endstylesheets %}

        <!--[if lt IE 9]>
        <script src="../assets/js/ie8-responsive-file-warning.js"></script>
        <![endif]-->

        <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
          <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
          <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
    </head>

    <body class="nav-md">
        <div class="container body">

            <div class="main_container">
                {{ include('::_navigation.html.twig') }}
                {{ include('::_topnav.html.twig') }}

                <!-- page content -->
                <div class="right_col" role="main">{% block body %}{% endblock %}</div>
                <!-- /page content -->

                <!-- footer content -->
                <footer>
                    <div class="">
                        <p class="pull-right">
                            <span class="lead"> <i class="fa fa-database"></i> Benerite</span>
                        </p>
                    </div>
                </footer>
                <!-- /footer content -->                
            </div>                
        </div>

        <div id="custom_notifications" class="custom-notifications dsp_none">
            <ul class="list-unstyled notifications clearfix" data-tabbed_notifications="notif-group"></ul>
            <div class="clearfix"></div>
            <div id="notif-group" class="tabbed_notifications"></div>
        </div>

        {% javascripts
            'assets/bower_components/jquery/dist/jquery.min.js'
            'assets/bower_components/jquery-ui/jquery-ui.min.js'
            output='js/compiled/main.js'
        %}
        <script src="{{ asset_url }}"></script>
        {% endjavascripts %}
    </body>
</html>

这是我的子表单,其中我在最后包含了一个js文件

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

{% block body -%}
    <h1>Privilege edit</h1>

    {{ form(edit_form) }}

        <ul class="record_actions">
    <li>
        <a href="{{ path('privilege') }}">
            Back to the list
        </a>
    </li>
    <li>{{ form(delete_form) }}</li>
</ul>
<script src="{{my_custom_js file}}"></script>

{% endblock %}

当我加载页面时,我希望在base.html.twig中包含的js文件后显示js文件

我的问题有解决办法吗?请帮帮我

2 个答案:

答案 0 :(得分:0)

在基本模板中,您有两个块,base和javascripts。 在<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/gray_pager" android:orientation="vertical" > <LinearLayout android:id="@+id/firstscreen_call_list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="5dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="5dp" android:layout_weight="1" android:background="@drawable/firstscreen_layout_bg" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.55" android:background="@color/call_list_1" > <TextView android:id="@+id/call_list_title" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:paddingLeft="10dp" android:text="Call List" android:textSize="32sp" /> <ImageView android:layout_width="48dp" android:layout_height="48dp" android:layout_gravity="center" android:adjustViewBounds="true" android:padding="5dp" android:scaleType="fitXY" android:src="@drawable/cm_phone_icon" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.45" android:background="@color/call_list_2" android:orientation="horizontal" android:paddingBottom="5dp" android:paddingTop="5dp"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/call_list_client_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="350" /> <TextView android:id="@+id/call_list_client_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:maxLines="2" android:textSize="15sp" android:text="Clients 99 Priority" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="wrap_content" android:background="@color/gray_bg" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/call_list_service_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="3250" /> <TextView android:id="@+id/call_list_service_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:maxLines="2" android:text="Servicing Contacts" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="wrap_content" android:background="#e1e1e1" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/call_list_assigned_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="250" /> <TextView android:id="@+id/call_list_assigned_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:maxLines="2" android:textSize="15sp" android:text="Assigned Contacts" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="wrap_content" android:background="#e1e1e1" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/call_list_custom_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="6" /> <TextView android:id="@+id/call_list_custom_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:maxLines="2" android:textSize="15sp" android:text="Custom List" /> </LinearLayout> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/firstscreen_client_note" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="5dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="5dp" android:layout_weight="1" android:background="@drawable/firstscreen_layout_bg" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.55" android:background="@color/client_note_1"> <TextView android:id="@+id/client_note_title" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:paddingLeft="10dp" android:text="Client Note" android:textSize="32sp" android:textStyle="normal" /> <ImageView android:layout_width="48dp" android:layout_height="48dp" android:layout_gravity="center" android:adjustViewBounds="true" android:padding="5dp" android:scaleType="fitXY" android:src="@drawable/cm_note_icon" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.45" android:background="@color/client_note_2" android:orientation="horizontal" android:paddingBottom="5dp" android:paddingTop="5dp"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/client_note_notes_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="10" /> <TextView android:id="@+id/client_note_notes_2" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:maxLines="2" android:text="Notes Logged Today" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="wrap_content" android:background="#e1e1e1" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/client_note_meeting_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp" android:gravity="center" android:text="7" /> <TextView android:id="@+id/client_note_meeting_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:maxLines="2" android:text="Meetings Schedule" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="wrap_content" android:background="#e1e1e1" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/client_note_phone_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="6" /> <TextView android:id="@+id/client_note_phone_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:maxLines="2" android:textSize="15sp" android:text="Phone Calls" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="wrap_content" android:background="#e1e1e1" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/client_note_email_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="4" /> <TextView android:id="@+id/client_note_email_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:maxLines="2" android:textSize="15sp" android:text="Email(s) Sent" /> </LinearLayout> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/firstscreen_to_do_list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="5dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="5dp" android:layout_weight="1" android:background="@drawable/firstscreen_layout_bg" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.55" android:background="@color/to_do_list_1"> <TextView android:id="@+id/todolist_title" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:paddingLeft="10dp" android:text="To-Do List" android:textSize="32sp" /> <ImageView android:layout_width="48dp" android:layout_height="48dp" android:layout_gravity="center" android:adjustViewBounds="true" android:padding="5dp" android:src="@drawable/cm_todo_icon" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.45" android:background="@color/to_do_list_2" android:orientation="horizontal" android:paddingBottom="5dp" android:paddingTop="5dp"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/todolist_open_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="20" /> <TextView android:id="@+id/todolist_open_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:maxLines="2" android:textSize="15sp" android:text="Open Task" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="wrap_content" android:background="#e1e1e1" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/todolist_expire_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="5" /> <TextView android:id="@+id/todolist_expire_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:maxLines="2" android:textSize="15sp" android:text="Expiring Today" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="wrap_content" android:background="#e1e1e1" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/todolist_direct_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="25" /> <TextView android:id="@+id/todolist_direct_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:maxLines="2" android:textSize="15sp" android:text="Directed Calls" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="wrap_content" android:background="@color/gray_bg" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/todolist_action_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp" android:gravity="center" android:text="2" /> <TextView android:id="@+id/todolist_action_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp" android:gravity="center" android:maxLines="2" android:text="Actions Pending" /> </LinearLayout> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/firstscreen_road_show" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="5dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="5dp" android:layout_weight="1" android:background="@drawable/firstscreen_layout_bg" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.55" android:background="@color/roadshow_1"> <TextView android:id="@+id/roadshow_title" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:paddingLeft="10dp" android:text="Roadshow" android:textSize="32sp" /> <ImageView android:layout_width="48dp" android:layout_height="48dp" android:layout_gravity="center" android:adjustViewBounds="true" android:padding="5dp" android:scaleType="fitXY" android:src="@drawable/cm_roadshow_icon" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.45" android:background="@color/roadshow_2" android:orientation="horizontal" android:paddingBottom="5dp" android:paddingTop="5dp"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/roadshow_meeting_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="10" /> <TextView android:id="@+id/roadshow_meeting_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="Meetings Schedule" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="wrap_content" android:background="#e1e1e1" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/roadshow_ongoing_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="5" /> <TextView android:id="@+id/roadshow_ongoing_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp" android:gravity="center" android:text="Ongoing Roadshow" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="wrap_content" android:background="#e1e1e1" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/roadshow_future_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="1" /> <TextView android:id="@+id/roadshow_future_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="Future Roadshow" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="wrap_content" android:background="#e1e1e1" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/roadshow_mtoday_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="2" /> <TextView android:id="@+id/roadshow_mtoday_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="15sp" android:text="Meetings Today" /> </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout> 阻止之后再创建一个类似childs_javascripts的内容。 在childe模板中,只需使用javascripts,就像使用块childs_javascripts

一样
body

答案 1 :(得分:0)

覆盖块并使用parent() twig函数调用父块。

base.html.twig

<html>
<head>
    ...
    {% block stylesheets %}
        {% stylesheets ... %}...{% endstylesheets %}
    {% endblock %}
    ...
</head>
<body>
    ...
    {% block body %}{% endblock %}
    {% block javascripts %}
        {% javascripts ... %}...{% endjavascripts %}
    {% endblock %}
</body>
</html>

page.html.twig

{% extends 'base.html.twig' %}

{% block body %}
    inner content
{% endblock %}

{% block stylesheets %}
    {{ parent() }}
    {% stylesheets additional styles %}...{% endstylesheets %}
{% endblock %}

{% block javascripts %}
    {{ parent() }}
    {% javascripts additional scripts %}...{% endjavascripts %}
{% endblock %}