2016-08-03 140 views
5

我仍然有一些问题需要在symfony中处理我的资产。 best practices说,我应该存储我的资产web/。 但我不喜欢在那里存储我的原始sass文件,因为它是一个公共文件夹,我认为只有编译或静态文件应该存储在那里。在Symfony3中组织资产

这就是为什么我存储他们(js和sass)目前在app/Resources。而我的assetic.read_fromapp/Resources。但是有一些捆绑,由assets:installweb/bundles/

现在,当我想将这个捆绑资产包含在我的树枝文件中时,我必须在样式表块中去../../web/bundles/..。这看起来不是很干净,所以我做了一个符号链接app/Resources/bundles->web/bundles/,这工作。

但我仍然认为它太多小提琴,我想知道是否有更好的方法可以更好地收集我的资产。

回答

7

不要使用AsseticBundle,它甚至在默认的symfony标准2.8中被删除。前端管理资产PHP是人谁真的不希望使用“合适的工具”

我亲自把我的源文件/assets/与咕噜JS我编译他们/web/assets/后来从assets.somedomain.com通过提供解决方法CDN

2年前我用symfony写过关于管理资产的文章,它仍然有效并且是最新的。你可能想看看它。

http://konradpodgorski.com/blog/2014/06/23/better-way-to-work-with-assets-in-symfony-2/

我应该的事情,我从那时起,但始终没有足够的时间:)

+0

多数民众赞成多晚的反应,但我不想使用外部cdns或基于JavaScript的CSS管理。所以我更喜欢纯php /服务器的方式来编译和管理我的资产 – Asara

+0

我尊重您的决定,但仍然认为这比设置正确的流程一次然后在每个项目中复制它更复杂。除非你没有任何编译器的情况下使用纯粹的CSS,那么只需将它们放在/ web/assets /中,你就可以去 –

0

了解到延长后,我不明白为什么你不能使用web/文件夹为您的资产。

我经常使用less以及之后处理和缩小的其他文件格式。 解决您的问题对我来说似乎很简单:在web/文件夹中使用两个文件夹。

第一个文件夹将是您的source/文件夹。您可以在其中放置所有sass文件。您将在此文件夹中添加一个.htaccess文件,并拒绝所有访问(您可以从src/文件夹中的.htaccess文件复制)。

然后第二个文件夹,我们称之为assets,它将保存所有您编译和缩小的资产。

这应该做的伎俩...;)

您可能感兴趣的this topic为好。这可能有助于隐藏您的source/文件夹的存在。 ;)

如果你真的不想在web/文件夹中有你的源文件,然后loot at this,它应该可以帮助你将你的源文件放在你的包中。

+0

为什么我应该将我的资源存储在一个通用/ web文件夹中?我想将它存储在捆绑包本身内 – Asara

+0

主要是因为Twig会从'web /'文件夹读取资产。例如''link rel =“stylesheet”href =“{{asset('assets/style.css')}}”>'只有当assets文件夹位于'web /'目录时才有效。你的'source /'文件夹可以在你的包中。然后你可以嵌入一个小的服务,它将与你的CSS/JS的编译器/缩小器一起工作,并将它写入'web /'目录。请记住良好的做法,重要的是要有一个平稳的工作项目。 ;) – Preciel

+0

@Asara现在是您选择解决方案的时候了,康拉德和我都为您提供了适合您问题的解决方案。无论如何,您的编制/缩小资产将会公开,没有任何工作可做。我们都提供了一个解决方案来保护您的来源。 – Preciel