2016-10-31 145 views
0

我使用Symfony 2.8作爲我的單頁Web應用程序。我有一個文件index.html.twig,它應該提供所有必需的資源。也許這很明顯,但我希望每一次在開發環境中重新加載所有內容,但不要在生產環境中重新加載。所述所需資源從位於vendor文件夾中的另一個軟件包Resources加載。Symfony2/Assetic:在導入的HTML文件的資產路徑中使用包註釋

出於這個原因,我在config.yml配置Assetic爲陳述如下:

assetic: 
    debug: "%kernel.debug%" 
    use_controller: 
     enabled: "%kernel.debug%" 
    workers: 
     cache_busting: 
      enabled: "%kernel.debug%" 

(我假設的調試只能在開發環境中啓用)

我加載所需的CSS /這樣的JavaScript:

{% stylesheets 
    '@StubbornShowaBundle/Resources/public/stubborn.css' 
    '@StubbornShowaBundle/Resources/public/showa.css' %} 
     <link type="text/css" href="{{ asset_url }}" rel="stylesheet" /> 
{% endstylesheets %} 
{% javascripts 
    '@StubbornShowaBundle/Resources/public/stubborn.js' 
    '@StubbornShowaBundle/Resources/public/showa.js' %} 
     <script src="{{ asset_url }}"></script> 
{% endjavascripts %} 

..這似乎是按預期工作。但是,我也導入了HTML文件。像這樣:

<link href="{{ asset('@StubbornShowaBundle/Resources/public/polymer/my-component.html') }}" rel="import"/> 

但是,上面的代碼不起作用。 @StubbornShowaBundle註釋看起來好像不能在asset命令中使用。另外,對於HTML導入,似乎沒有「循環方法」(或者任何你想調用stylesheetsjavascriptsimages的東西)。如果我直接鏈接到有問題的文件,除了彎曲一個完全破壞與周圍代碼一致性的醜陋黑客外,我還會打破整個Symfony/Assetic自動處理資源重新排序系統並且調試變得混亂。我怎樣才能解決這個問題,而不是每次在調試時更改代碼都不會強制重新轉儲資產? (是否有可能以合理的方式解決?)

回答

0

似乎不可能在Assetic中使用HTML導入,就像它用於JavaScript,CSS和圖像的方式一樣。 To quote from the manual

您可以使用Assetic處理CSS樣式表,JavaScript文件和圖像。


應該做些什麼,取而代之的是很大程度上取決於我所看到的情況(要求)。也許將所有東西都放到模板中也是可能的,但在我的特殊情況下,我必須導入Polymer組件,以便將這些HTML文件轉換爲模板將會是一場噩夢(因爲語法衝突等等)。 所以我得到了使用url的路徑,並使用了this answer中描述的方法。

1

後資產:安裝& & assetic:甩你可以鏈接到它想:

href="/bundles/stubbornshowa/polymer/my-component.html" 

只是看看

/web/bundles/ 

目錄

如果你是剛剛更新的文件,你可以使用assetic:轉儲--watch或assetic:看

,如果你把新文件到您的ressources你要調用的資產:在/ web安裝

forlder你也可以只創建一個也許叫「上傳」文件夾 ,並把你的東西在那裏,你可以鏈接到它通過href =「/ uploads/...」 然後你根本不需要任何資產

+0

也許我的解釋不夠,但我意識到我可以安裝和轉儲的事實。我想知道的是如何直接鏈接到我的HTML導入,理想情況下與包含批註的樣式表和JavaScript相同。 – StubbornShowaGuy

+0

您應該將您的資產與模板分開,資產用於使用像js,css,img's,asio等資源。併爲模板使用樹枝! ;-) –

+0

你說得對,應該將模板用於模板,並且模板不應該與資產混合使用,但不是所有的HTML都是模板。 HTML只是意味着它是一個用超文本標記語言編寫的文件,在我的情況下,它是一個聚合物組件和一個外部庫。 – StubbornShowaGuy

相關問題