Symfony2 ::加载自定义表单类型时添加资产

时间:2014-01-28 12:39:35

标签: javascript php symfony twig

我已经创建了一个用于加载自定义表单类型的服务。 但是,每当我调用此服务时,是否有可能自动将一些javascript自动加载到我的块'footer_javascripts'中?因为我不想每次都加载所有的javascript。

目前,我这样做:

{% block wysiwyg_widget %}
    {% block footer_javascripts %}
       <script src="{{ asset('bundles/acme/js/demo/demo1.js') }}"></script>
       <script src="{{ asset('bundles/acme/js/demo/demo2.js') }}"></script>
   {% endblock %}
{% endblock %}

但现在代码在内容中,我想在块'footer_javascript'中调用{{parent()}}不起作用。

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以combine your Javascript files(以及CSS文件)减少HTTP请求的数量。

您可以使用变量来决定是否需要加载Javascript。

首先,在您的控制器上定义它:

public function homepageAction($no_locale = false)
{
    [...]

    $customFormType = null;

    if (/* test if you used the custom form-type */)
    {
            $customFormType = true;
    }

    return $this->render('SCACWebsiteBundle:Default:homepage.html.twig',
        array(
            'form' => $form,
            'customFormType ' => $customFormType
        )
    );
}

然后你可以在Twig中测试变量:

{% if ((customFormType is defined) and (customFormType)) %}
    {% javascripts
        'bundles/acme/js/demo/demo1.js'
        'bundles/acme/js/demo/demo2.js' %}
        <script src="{{ asset_url }}"></script>
    {% endjavascripts %}
{% endif %}

使用(customFormType is defined),您无需在所有控制器中声明变量。此测试确保在未定义变量时不会出现错误。只有在加载自定义表单类型时,条件(customFormType)才会成立,即使它是相同的控制器,有或没有自定义表单类型。如果未加载自定义表单类型,customFormType将具有null值,并且条件的结果将为false。