如何实现与第三方捆绑包相关的服务?

时间:2014-08-15 13:46:26

标签: php symfony service vichuploaderbundle

有一件事我不想错过Symfony,因为我觉得我无法理解这么好。你可以帮帮我吗??我将捆绑VichUploaderBundle作为示例,但在其他地方也是如此。

文档说how to create a custom directory,但在我的情况下,我想与id中的news相关联。 示例目录:upload / news /:news_id / image.jpg

我对此的理解是,我必须创建两个不同的服务,一个用于upload_destination,另一个用于directory_namer,我是对的吗?

config.yml

vich_uploader: 
    # ... 
    mappings: 
    product_image: 
    upload_destination: news_image 
    directory_namer:    my.directory_namer.news  

但我怎么做呢?如果我按照Symfony的文档,我应该创建这种方式 the Synfony services

我应该遵循哪些步骤?我想在我的Newsbundle中创建一个类并将其指定为'services`。好吗?

如何在class中创建service作为news_id image_name?以及将database保存在custom directory中的罚款{{1}}?然后另外保存{{1}}?

这对我来说是一件非常重要的事情,因为我认为了解这一点有助于我理解其他的捆绑以及如何使它们变得复杂。

总结:

如何使用新闻ID保存到自定义目录以及如何使用新闻ID重命名图像?

我希望你能帮助我。

谢谢,卡洛斯。

1 个答案:

答案 0 :(得分:1)

与外部捆绑交互的方式有多种:

  • 使用捆绑包触发的事件
  • 配置覆盖
  • 声明将由捆绑操作的服务(如在您的示例中)
  • 覆盖捆绑包 - 一些捆绑包将一些类路径放入其配置中,您可以使用自己的classe覆盖它。

我从未使用 VichUploaderBundle ,但在快速浏览一下他的文档后,您的服务似乎名为" my.directory_namer.news"应该实现 DirectoryNamerInterface https://github.com/dustin10/VichUploaderBundle/blob/master/Naming/DirectoryNamerInterface.php

然后,您可以定义" directoryName"接口施加的方法,并将您的逻辑放入其中,以从对象(新闻)构建目录的名称。

希望这会对你有所帮助。

祝你好运, Ĵ