javascript - Symfony2::加载自定义表单类型时添加 Assets

标签 javascript php symfony twig

我创建了一个加载自定义表单类型的服务。 但是,每当我调用此服务时,是否有可能自动将某些 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/

相关文章:

database - 如何在 Symfony 2 中安全地对写操作进行单元测试?

javascript - 为什么 Javascript 的 "in"运算符始终比与未定义的严格成员比较慢?

javascript - 如何在循环并进行异步 promise 调用后获取重新格式化的 json 对象

php - php中数组中重复元素的计数

mysql - 在 mySQL/Mongo 或 Postgres 中存储 JSON 元数据

Symfony ChoiceType 启用或禁用 TextType

javascript - 如何从该字符串中提取单个值?

php - 如何处理 Javascript 中的换行符? (来自 PHP)

php - 我想删除 php mysql 中的 where id=$POST ['id' ]

php mysqli bind_param $insert->execute() 始终返回 true