我已经创建了一个用于加载自定义表单类型的服务。 但是,每当我调用此服务时,是否有可能自动将一些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()}}不起作用。
提前致谢
答案 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。