我创建了一个加载自定义表单类型的服务。 但是,每当我调用此服务时,是否有可能自动将某些 javascript 自动加载到我的 block “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 %}
但现在代码在内容中,我希望它在 block 'footer_javascript' 中并且调用 {{ parent() }} 不起作用。
提前致谢
最佳答案
您可以 combine your Javascript files (以及 CSS 文件)以减少 HTTP 请求的数量。
您可以使用变量来决定是否需要加载 Javascript。
首先,在你的 Controller 上定义它:
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 已定义)
,您无需在所有 Controller 中声明该变量。此测试可确保在 undefined variable 时不会出现错误。只有加载自定义表单类型时,条件 (customFormType)
才会为真,即使它是同一个 Controller ,有或没有自定义表单类型。如果未加载自定义表单类型,customFormType
将具有 null
值并且条件的结果将为 false。
关于javascript - Symfony2::加载自定义表单类型时添加 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21405778/