Symfony有一件事是我不想错过的,因为我以为我不能理解得那么好。你能帮我吗?我将以包VichUploaderBundle
为例,但在其他包中也会发生同样的情况。
文档说明如何创建自定义目录,但在我的情况下,我想从news
关联到id
。目录示例: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的文档,我应该这样创建Synfony服务
我应该遵循哪些步骤?我想在我的Newsbundle
中创建一个类,并将其分配为"服务"。它好吗?
我如何在class
中捕获我已创建为service
的news_id
?和优良的image_name
保存在database
?然后保存custom directory
也?
这对我来说是一件非常重要的事情,因为我认为知道这有助于我理解其他包以及如何应用它们。
总结:
如何用新闻的id保存到自定义目录,如何用新闻的id重命名图像?
我希望你能帮助我。
谢谢,卡洛斯。
与外部bundle交互的方式有多种:
- 使用由bundle触发的事件
- 配置覆盖
- 声明将被bundle操作的服务(就像在你的例子中一样)
- 覆盖包——有些包会把一些类路径放到它们的配置中,你可以通过覆盖这个来使用你自己的类。
我从未使用过VichUploaderBundle,但是在快速查看了他的文档之后,似乎您的服务名为"my.directory_namer"。>DirectoryNamerInterface (https://github.com/dustin10/VichUploaderBundle/blob/master/Naming/DirectoryNamerInterface.php)
然后,您可以定义接口强加的"directoryName"方法,并将您的逻辑放入其中,以从对象(新闻)构建目录名称。
希望这对你有帮助。
最诚挚的问候,J