跳到内容

文件系统加载器

编辑此页

The FileSystem data loader allows for loading images from local file system paths.

提示

如果您不进行任何配置,则默认使用此加载器。

配置

要为名为 profile_photos 的特定上下文设置此加载器,请使用

1
2
3
4
5
6
# app/config/config.yml

liip_imagine:
    loaders:
        profile_photos:
            filesystem: ~

默认情况下,Symfony 的 web/ 目录被注册为数据根目录,用于从中加载资源。对于许多安装来说,这已经足够了,但有时您可能需要从其他位置加载图像。为此,您必须设置 data_root 参数。

1
2
3
4
5
6
7
# app/config/config.yml

liip_imagine:
    loaders:
        default:
            filesystem:
                data_root: /path/to/source/images/dir

从 1.7.2 版本开始,您可以注册多个数据根目录,文件定位器将搜索每个根目录以查找请求的文件。

1
2
3
4
5
6
7
8
9
# app/config/config.yml

liip_imagine:
    loaders:
        default:
            filesystem:
                data_root:
                    - /path/foo
                    - /path/bar

2.1.0 版本开始,您可以在配置中允许无效的数据根目录(这些根目录在运行时会被删除)(通常无效的数据根目录会导致抛出异常)。这允许您为生产和开发环境配置数据根目录,而无需依赖多个配置。

1
2
3
4
5
6
7
8
9
10
11
# app/config/config.yml

liip_imagine:
    loaders:
        default:
            filesystem:
                data_root:
                    - /path/foo
                    - /path/bar
                    - /invalid/path/will/be/removed/at/runtime
                allow_unresolvable_data_roots: true

1.7.3 版本开始,您可以请求从所有已注册的扩展包中自动注册公共资源路径作为数据根目录。这允许您从位于已加载扩展包内的 Resources/public 文件夹加载资源。要启用此功能,请将 bundle_resources.enabled 配置选项设置为 true

1
2
3
4
5
6
7
8
# app/config/config.yml

liip_imagine:
    loaders:
        default:
            filesystem:
                bundle_resources:
                    enabled: true

如果您只想注册部分 Resource/public 文件夹,而不是全部,您可以通过黑名单列出您不想注册的扩展包,或白名单列出您想要注册的扩展包来完成。例如,要将扩展包 “FooBundle” 和 “BarBundle” 列入黑名单(不注册),您将使用以下配置。

1
2
3
4
5
6
7
8
9
10
11
12
# app/config/config.yml

liip_imagine:
    loaders:
        default:
            filesystem:
                bundle_resources:
                    enabled: true
                    access_control_type: blacklist
                    access_control_list:
                        - FooBundle
                        - BarBundle

或者,如果您想白名单列出(仅注册)扩展包 “FooBundle” 和 “BarBundle”,您将使用以下配置。

1
2
3
4
5
6
7
8
9
10
11
12
# app/config/config.yml

liip_imagine:
    loaders:
        default:
            filesystem:
                bundle_resources:
                    enabled: true
                    access_control_type: whitelist
                    access_control_list:
                        - FooBundle
                        - BarBundle

最后,从 `1.7.3` 版本开始,您可以命名您的数据根目录,并在调用资源时引用它们。这在很多情况下都很有用,例如想要明确指定,但当您有多个数据根目录路径都包含同名文件时,它尤其有用。在这种情况下,您可以通过在 `data_root 配置数组中提供索引来命名您的数据根目录路径(请注意,自动注册的扩展包资源路径具有扩展包短类名称定义的索引)。

1
2
3
4
5
6
7
8
9
# app/config/config.yml

liip_imagine:
    loaders:
        default:
            filesystem:
                data_root:
                    foo: /a/foo/path
                    bar: /a/bar/path

鉴于上述配置,您可以使用 @index:path/to/file.ext 格式显式请求根路径。例如,要请求文件 /a/foo/path/with/file.ext,您可以传递 @foo:with/file.ext 作为文件名。

这项工作,包括代码示例,均根据 Creative Commons BY-SA 3.0 许可协议获得许可。
目录
    版本