跳到内容

自定义数据加载器

编辑此页

你可以编写自定义数据加载器,从任何可想象的后端检索图像数据。数据加载器需要实现 LoaderInterface 接口。

1
2
3
4
5
6
namespace Liip\ImagineBundle\Binary\Loader;

interface LoaderInterface
{
    public function find($path);
}

LoaderInterface 接口定义了 find 方法,该方法使用图像路径调用,并且需要返回 BinaryInterface 的实例。

警告

请注意,$path 可能来自图像控制器。你需要在你的加载器中清理此参数,以避免暴露图像集合之外的文件。

自动注册

默认情况下,你的加载器将自动注册,因为它实现了 LoaderInterface 接口。

你将能够通过使用其完全限定类名在配置中引用和使用你的自定义加载器。

手动注册

如果你想给它一个不同的名称,你需要配置一个服务,使用你的自定义加载器并用 liip_imagine.binary.loader 标签标记它。

要使用名称 my_custom_data_loader 注册 App\Service\MyCustomDataLoader,你将使用以下配置

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

services:
    imagine.data.loader.my_custom:
        class: App\Service\MyCustomDataLoader
        arguments:
            - "@liip_imagine"
            - "%liip_imagine.formats%"
        tags:
            - { name: "liip_imagine.binary.loader", loader: my_custom_data_loader }

你可以通过将其添加到配置中作为新的默认加载器来设置你的自定义数据加载器。

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

liip_imagine:
    data_loader: my_custom_data_loader

或者,你可以为特定的过滤器集设置自定义数据加载器。

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

liip_imagine:
    filter_sets:
        my_special_style:
            data_loader: my_custom_data_loader
            filters:
                # your filters
这项工作,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议获得许可。
目录
    版本