簡體   English   中英

在Symfony2表單小部件中包含Javascript

[英]Include Javascript in Symfony2 form widgets

我創建了自己的小型Symfony2表單類型。 為了使其正常工作,我需要包含一個js庫。 雖然在單個Web應用程序中使用此新表單類型時這是一項簡單的任務,但當我決定將該表單類型移動到專用包以使其可重用時,這變得更加困難。

目前,我知道兩種可能的解決方案

1)讓每個使用我的包的人都在他們的base.html.twig中添加一行

2)添加一個<script>標簽,用於將庫嵌入到我的表單小部件中

他們兩個都不是很聰明,所以我的問題是:我該如何做得更好? 特別是,如果我的表單類型可以在一個頁面上多次包含。 更糟糕的是,如果我的表單類型要求例如JQuery存在,但我不知道,如果JQuery已經加載到應用程序中。

由於你沒有任何關於bundle的用戶實際包含JS的控件(我知道它們不包含在::base.html.twig文件中的項目,而是在一個名為layout.html.twig的文件中)在應用程序的主要包中),一個好方法是提供一個JavaScript文件,然后可以通過Assetic包含,如下所示:

{% javascripts debug=false output="js/bundles.js"
    '@YourVendorAndBundleName/Resources/public/js/formtype.js'
%}
    <script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}

因此,您基本上只需將所需內容存儲在{yourBundle}/Resources/public/js中的一個文件中。 symfony2命令assets:install將完成剩下的工作。

通過這種方式,用戶可以將JS與其他供應商JS一起存儲在一個文件中,並使用它來做更多的事情,如縮小等。

重要說明:請務必將其添加到安裝/使用指南中。


如果您的JS代碼依賴於第三方JS庫(如jQuery),則不應添加它們,因為Symfony2 Cookbook說: http//symfony.com/doc/master/cookbook/bundles/best_practices.html#vendors

相反,您可能需要具有特定名稱的特定資產,如此處所述: 在Symfony 2中管理常見的javascript依賴項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM