为什么资产:安装不复制/资源/公共到/ web文件夹?

nes*_*tor 3 php assets symfony

我遇到了运行php app/console asset:install命令的问题.我的操作系统是Windows.

我的目的是app/Resources/public使用该命令复制css,js,images等文件.运行该命令后,将创建一个bundle文件夹/web.但是在创建的bundle文件夹中没有任何文件app/Resources/public.只有两个文件夹:sensiodistribution框架.

为什么我没有获得包含复制资产的AppBundle文件夹/web/bundles

Nik*_*ary 5

您的资源>公共文件夹必须位于您的应用程序文件夹下的捆绑包或应用程序下,您可以将twig文件添加到app/resource文件夹以覆盖(默认)文件,就像我们这样做以覆盖错误页面,但不是资产,我试过它不起作用.

像这样

然后它会工作,你可以在这里检查 - 链接

如果你使用符号链接而不是复制文件夹/文件会更好

php app/console assets:install --symlink
Run Code Online (Sandbox Code Playgroud)


Nic*_*tel 5

app/console assets:install仅安装在捆绑软件中找到的资产。app/Resources不被视为捆绑软件,因此不会安装这些资产。

实际上,《 Symfony官方最佳实践》建议将公共资产(例如CSS样式表,JavaScript文件,图像等)直接存储在web/目录中。正如您在该页面上看到的那样,这也使使用模板中的资产变得更加容易。

app/console assets:install命令的目的是将vendor/作为第三方捆绑软件一部分下载到目录的资产复制或符号链接到公共web/目录。调试工具栏就是一个很好的例子。

但是,您自己的资产已经是项目的一部分,因此您可以轻松地将其直接存储在web/目录中。将它们存储在app/Resources目录中以便将它们复制到web/单独的步骤中没有任何好处。

当然,如果您有源文件(例如SCSS文件或未缩小的CSS / JS文件),则可能不希望将它们存储在公共目录中。在这种情况下,请使用app/Resources来存储源文件,并使用诸如Assetic之类的构建工具将缩小/已处理的资产复制到web/目录中。