使用composer和assets为symfony项目包含jQuery的最佳方式是什么


What is the best way to include jQuery for symfony project using composer and assets

我已经安装了带有composer的jQuery。

现在jQuery在vendor/components/jquery目录中。

我试着把它包括在/app/config/config.yml

assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    filters:
        cssrewrite: ~
    assets:
        jquery: %kernel.root_dir%/../vendor/components/jquery/jquery.min.js

如果我运行命令:

php app/console assetic:dump

我得到

[RuntimeException]                                                                                                              
  The source file "/home/user/project/app/current/app/../web/vendor/components/jquery/jquery.min.js" does not exist.

原因assetic仍在/web/目录中查找,这是错误的。如何更改它,使其在/vendor/目录中显示?此外,我不想把jquery文件放在公共捆绑文件夹中,因为这会阻碍通过composer获得正确版本的供应商库的所有感觉。

我不太喜欢在Symfony的供应商目录中安装jquery,因为它不是PHP库。Composer和vendor目录只能用于PHP依赖项。您应该将前端部分与后端部分分开。所有的js、css和其他资产都应该放到其他地方。

因此,您有两个选项:

  1. 如果您希望每个捆绑包都有单独的资源,那么将用于前端的资源放在捆绑包的公共目录中:例如,将jquery.min.js放在捆绑的Resources/public/js文件夹中

然后运行命令php app/console assets:install。这将把你的js文件复制到web/bundles/yourbundle/js/目录中。

最后,在您的trick文件中使用<script type="text/javascript" src="{{ asset('yourbundle/js/jquery.min.js') }}"></script>来添加jquery。

  1. 如果所有捆绑包都有公共资源,请将资源直接放在web文件夹中,例如:web/jsweb/cssweb/img。。。然后在树枝模板中使用<script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script>

在关注评论中的链接并重试其他答案时,这非常容易。所有丢失的都是

composer require robloach/component-installer

有关robloach/组件安装程序的更多信息

然后手动将该行添加到composer.json

"config": {
    #...
    "component-dir": "web/assets",
    #...
},

假设您已经拥有

composer require components/jquery

您可能需要重新运行命令

composer install

现在,它将创建一个目录/web/assets/jquery,其中包含所有易于包含的文件。