资产转储后将资产恢复为动态模式

Posted

技术标签:

【中文标题】资产转储后将资产恢复为动态模式【英文标题】:Put Assetic back in dynamic mode after assetic dump 【发布时间】:2015-10-18 14:08:12 【问题描述】:

我正在使用 Symfony2 和 Assetic。最近我做了很多 CSS 工作,所以在某个时候我需要命令

$ php app/console assetic:dump --env=prod --no-debug

自从我使用它以来,我每次更改 CSS 时都需要运行该命令以查看差异。现在我做了一些研究,发现我可以将 Assetic 置于观看模式,这样我就不必在每次更改后使用以下命令运行上面的命令:

$ php app/console assetic:dump --watch --env=prod

但是,我只是想让它回到手动模式之前。 Symfony2 文档说明了如何进行资产转储,但没有说明如何将其恢复为动态模式 (http://symfony.com/doc/current/cookbook/assetic/asset_management.html#dumping-asset-files)

有谁知道如何让它回到动态模式?

【问题讨论】:

你的 config.yml 中有 assetic: debug: %kernel.debug% use_controller: true 吗? 是的,我在 config.yml 中的资产部分:pastebin.com/495BTwsm 【参考方案1】:

Symfony 不从内部控制器动态地提供资产有两种可能:

1。 assetic.use_controller 不是真的

确认 100% 你告诉 Symfony assetic.use_controllertrue。一种直接的调试方法是将其添加到控制器操作的顶部并重新加载页面:

var_dump($this->container->getParameter('assetic.use_controller'));die();

没有将true 作为返回值可能意味着您将在config_dev.phpconfig_prod.php 中覆盖use_controller,具体取决于您指向的环境。

2。您的 Web 服务器在传递给 Symfony 之前正在检查静态资产

大多数网络服务器都可以配置为检查 URL 是否指向物理文件资产并交付该文件。因此,如果您在 Symfony 中转储了资产,则网络服务器可能正在提供该文件,而不是将请求传递给 Symfony。

对于 nginx,请参阅:http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files 对于 Apache,请参阅:Apache rewrite rule similar to Nginx try_files

解决方案是从文件系统中删除转储的资产文件。它们的位置取决于您将它们配置到的位置,但请查看web/jsweb/bundles 等。

【讨论】:

以上是关于资产转储后将资产恢复为动态模式的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 Windows 7 为 Symfony2 项目转储资产时出现运行时异常

symfony2 - 资产资产:转储命令不能正确创建样式表

从 Android 动态功能模块将资产加载到 WebView

php WordPress:动态资产文件名

如何使用 json 本地资产文件创建动态列表视图

Laravel 不使用 https 作为资产和动态路由