Это можно исправить с помощью свойства виртуального поля, манипулируя данными перед сохранением / извлечением реального поля.
Это мое определение поля в easy_admin.yaml
:
- { property: 'virtualFilename', type: 'file_upload', type_options: {upload_dir: 'public/imageswerk',upload_filename: '[uuid].[extension]' }}
И Вот как мои сеттеры / геттеры выглядят в Entity:
/**
* @var string
*
* @ORM\Column(name="filename", type="string", length=80, nullable=false)
*/
private $filename;
/**
* @return string|null
*/
public function getFilename()
{
return $this->filename;
}
/**
* @param string $filename
*/
public function setFilename(string $filename)
{
$this->filename = $filename;
}
public function getVirtualFilename()
{
//Set path for easyadmin
return realpath(__DIR__.'/../../public/imageswerk/'.$this->filename);
}
public function setVirtualFilename($filename)
{
//Only keep last part of filepath
$this->setFilename(basename($filename));
}
Я устанавливаю ручной путь в getVirtualFilename
, но в идеале вы должны внедрить что-то вроде% project_dir% или что-то другое, чтобы предотвратить жестко закодированные пути нравится.