我有一个Symfony 3项目,内容如下:
vich/uploader-bundle
liip/imagine-bundle
vich_uploader配置:
db_driver: orm
mappings:
m_graphics:
uri_prefix: '/graphics'
upload_destination: '%absolute_upload_dir%/graphics'
m_pictures:
uri_prefix: '/pictures'
upload_destination: '%absolute_upload_dir%/pictures'
liip_imagine配置
resolvers :
default :
web_path : ~
loaders:
default:
filesystem:
data_root: '%absolute_upload_dir%'
filter_sets :
cache : ~
thumbnail:
animated: true
quality : 90
filters :
thumbnail : { size : [170, 170], mode : inset }
两个带有“文件”字段的实体
/**
* @var File|null
* @Vich\UploadableField(mapping="m_graphics", fileNameProperty="filename")
*/
private $file;
/**
* @var string
*
* @ORM\Column(name="filename", type="string", length=255, nullable=true)
*/
private $filename;
and idem with mapping "m_pictures" in another entity
每个实体的FormType,每个实体都在做:
public function buildForm(
FormBuilderInterface $builder,
array $options) {
$builder->add('file', VichImageType::class, [
'label' => false,
'required' => false,
'attr' => ['class' => 'custom-file-input'],
'imagine_pattern' => 'thumbnail'
])
表单小部件:
{% block vich_image_widget %}
<div class="vich-image row">
<div class="col-xs-6 col-md-3">
{{ form_widget(form.file) }}
{% if image_uri %}
<img src="{{ image_uri }}">
{% endif %}
</div>
</div>
{% endblock %}
此小部件无法生成正确的网址:它缺少“图形”或“图片”目录。
好吧,事实上我找到了原因。
翻阅代码,我终于找到了原因。
这是完全正常的,因为Vich从存储文件夹(即,相对于此映射的 这意味着您必须为 那么,您对此有何看法?是否可以正确实现这样的配置?
(对Vich,对Liip)需要进行哪些代码修改才能使vich给出正确的liip路径? 对于轶事,我们最终重写VichImageType,将“ resolvePath”替换为“ resolveUri”。似乎相反的修改实际上是(合理的)错误更正。
https://github.com/dustin10/VichUploaderBundle/commit/514425c3115024cd680ee02113918b56cb639ad9 但是我想要一个更清洁的解决方案。 欢迎任何想法/讨论。upload_destination
参数而言)为Liip提供了相对路径。< / p>
vich_uploader.mappings.*.upload_destination
和liip_imagine.loaders.*.filesystem.dataroot
配置相同的值。