资产生成链接但没有文件

Tho*_*s K 24 symfony assetic

我正在尝试在symfony2中使用assetic来管理我的CSS.链接生成正常.但是,不会生成任何文件.

这是我的配置:

Layout.html.twig

    {% stylesheets
      '@FooBundle/Resources/public/css/main.css'
      filter='cssrewrite'
    %}
    <link rel="stylesheet" href="{{ asset_url }}" />
    {% endstylesheets %}
Run Code Online (Sandbox Code Playgroud)

Config.yml

assetic:
debug:          %kernel.debug%
use_controller: false
bundles:        [ FooBundle ]
filters:
    cssrewrite: ~
Run Code Online (Sandbox Code Playgroud)

Config_dev.yml

assetic:
use_controller: true
Run Code Online (Sandbox Code Playgroud)

Assetic生成te链接foo.foo/app_dev.php/css/957d3aa_main_1.css.但是,该文件不存在(或其他任何地方).我尝试过使用权限并查看(nginx)日志,但到目前为止还没有.

非常感谢所有的帮助.

Mic*_*ick 35

处理资产时有2个选项.您没有在计算机中看到资产的原因是您选择了选项1.


选项1:SYMFONY可以为您动态处理文件

这意味着在开发环境中生成的每个资产路径都由Symfony动态处理.因此,Assetic会生成CSS和JavaScript文件的路径,这些文件实际上并不存在于您的计算机上.这是一个内部Symfony控制器,可以打开文件并为您回送内容.

优点: - 对您的资产所做的更改立即生效 - 这在开发模式下非常好,因为Symfony会为您动态生成文件

缺点: - 这在prod模式下是不可能的,因为动态渲染每个资源会太慢 - 你的计算机上无法直接访问资产(这就是你无法找到文件的原因) - 如果你使用的话可能会很慢很多过滤器等......

要在开发模式下执行此操作,只需在config_dev.yml中编辑assetic配置:

assetic:
    use_controller: true
Run Code Online (Sandbox Code Playgroud)

选项2:倾销资产文件

如果您不想动态处理资产,可以手动转储资产,这意味着实际上在您的计算机上编写资产.

优点: - 不需要Symfony动态生成文件,因此运行速度更快 - 因此,这在prod模式下是完美的 - 文件可以在web /目录中(或者在您选择输出它们的任何地方)进行物理访问

缺点: - 您需要在每次更改内容时转储资产.或者您可以使用--watch命令转储资产,如果您在开发模式下工作,这可能会有点烦人.

去做这个:

将use_controller设置为false(config_dev.yml):

assetic:
    debug:          %kernel.debug%
    use_controller: false
Run Code Online (Sandbox Code Playgroud)

如有必要,您甚至可以选择阅读和输出资产的位置

   assetic:
        read_from:      %kernel.root_dir%/Resources/views/
        write_to:       %kernel.root_dir%/../web/thefolderyouwant/
Run Code Online (Sandbox Code Playgroud)

现在,输出从您的write_to配置开始

{% stylesheets
  '@FooBundle/Resources/public/css/main.css'
  output='css/main.css'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
Run Code Online (Sandbox Code Playgroud)

如果继续,您将遇到资源错误,因此请在config_dev.yml中注释掉或删除这些资产路径:

_assetic:
    resource: .
    type:     assetic
Run Code Online (Sandbox Code Playgroud)

最后,您可以自动生成资产,以便您所做的更改立即生效:

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

在这种情况下,该文件现在应该可用:

/web/thefolderyouwant/css/main.css

有关更多信息,请参阅Cookbook:如何使用Assetic进行资产管理?