Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 仅包含转储文件的资产资产_Symfony_Bower_Assetic - Fatal编程技术网

Symfony 仅包含转储文件的资产资产

Symfony 仅包含转储文件的资产资产,symfony,bower,assetic,Symfony,Bower,Assetic,在意识到无法在当前prod服务器上安装Bower之前,我们已经开始使用Bower(通过SpBower)来管理js和css库 其思想不是在prod服务器上生成文件,而是在dev环境中转储prod文件并上载这些转储文件。但即使在prod模式下,Assetic也在寻找源文件,bower会注册这些供应商文件,因此Assetic会抛出此异常 (Twig_Error_Syntax(code: 0): An exception has been thrown during the compilation o

在意识到无法在当前prod服务器上安装Bower之前,我们已经开始使用Bower(通过SpBower)来管理js和css库

其思想不是在prod服务器上生成文件,而是在dev环境中转储prod文件并上载这些转储文件。但即使在prod模式下,Assetic也在寻找源文件,bower会注册这些供应商文件,因此Assetic会抛出此异常

(Twig_Error_Syntax(code: 0): An exception has been thrown during the compilation 
of a template (\"There is no \"jquery_js\" asset.\")
其中,在Bower注册之后以这种方式调用jquery_js

    {% javascripts output='js/vendor-1.js'
        '@jquery_js'
        '@jquery_ui_js'
        '@chartjs_js'
        '@Chart_StackedBar_js_js' %}
        <script type="text/javascript" src="{{ asset_url }}"></script>
    {% endjavascripts %}
在config_dev.yml中

assetic:
    use_controller: false
以及bower.json文件的内容

{
    "name": "ProjectBundle",
    "dependencies": {
        "jquery": "~2.0",
        "jquery.countdown": "~2.0", 
        "jquery-ui": "~1.11",
        "bootstrap": "~3.0",
        ...
    }
}

我找到了一个工作,不是很好,但解决了我们的问题

其思想是仅在dev env上使用
sp_bower
,以便将其仅放在
config_dev.yml
中,并在
config_prod.yml
中手动指定prod env so上的命名资产

我们实际上不需要将正确的路径放入源文件,因为我们不会在prod上生成输出文件(但使用上载的文件),我们甚至可以使用一个假js文件(例如名为
prodDumpAlert.js
)包含例如解释发生了什么的警报

因此,
config_dev.yml
如下所示:

imports:
    - { resource: config.yml }

assetic:
    assets:
        jquery_js:
            inputs:
                - '@ProjectBundle/Resources/public/utils/prodDumpAlert.js'
        jquery_ui_js:
            inputs:
                - '@ProjectBundle/Resources/public/utils/prodDumpAlert.js'
        chartjs_js:
            inputs:
                - '@ProjectBundle/Resources/public/utils/prodDumpAlert.js'
...

呃,如果您不希望Assetic从源文件创建
输出
文件,您希望它做什么?假设我有两台服务器,一台用于开发,一台用于产品。我希望使用Assetic和Bower在开发服务器上生成输出文件,并仅在产品服务器上上载生成的输出文件(并非所有的源都已聚合到输出文件中)。好的,我明白了…我现在理解了您的问题。您可以发布一个使用bower筛选器的示例文件(例如生成
@jquery\u js
),以及您的
config.yml
中的
assetic
部分?@Ixg感谢您的帮助。我添加了
config.yml
中的相应部分(我们正在使用SpBower)并添加了
bower.json
文件的内容。您是否考虑过使用在prod模式下运行并生成所有资产的构建服务器,以便只需复制它们?Assetic在dev和prod模式下的工作方式不同,因此您需要使用“live”生成所有资产但是在生成之后,您应该能够简单地复制它们并在实时服务器上使用它们。
imports:
    - { resource: config.yml }

assetic:
    assets:
        jquery_js:
            inputs:
                - '@ProjectBundle/Resources/public/utils/prodDumpAlert.js'
        jquery_ui_js:
            inputs:
                - '@ProjectBundle/Resources/public/utils/prodDumpAlert.js'
        chartjs_js:
            inputs:
                - '@ProjectBundle/Resources/public/utils/prodDumpAlert.js'
...