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

car*_*mba 2 php jquery symfony composer-php

我用作曲家安装了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
Run Code Online (Sandbox Code Playgroud)

如果我运行命令:

php app/console assetic:dump
Run Code Online (Sandbox Code Playgroud)

我明白了

[RuntimeException]                                                                                                              
  The source file "/home/user/project/app/current/app/../web/vendor/components/jquery/jquery.min.js" does not exist.
Run Code Online (Sandbox Code Playgroud)

导致资产仍在查找/web/错误的目录.如何更改它以便在/vendor/目录中查找?此外,我不想将jquery文件放在公共包文件夹中,因为这会使通过composer获得正确版本的供应商库的所有感觉失去作用.

小智 7

我不是在Symfony的供应商目录中安装jquery的忠实粉丝,因为它不是PHP库.Composer和vendor目录应仅用于PHP依赖项.您应该将前端部分与后端部分分开.所有的js,css和其他资产都应该去其他地方.

因此,您有两个选择:

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

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

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

  1. 如果您对您的所有包的公共资源,把你的资源,直接在web文件夹,例如:web/js,web/css,web/img...然后用<script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script>你的树枝模板.