EasyAdmin 图片路径
EasyAdmin image path
我不知道如何显示通过 EasyAdmin 上传的图像。当它上传图片时,它会在服务器上显示绝对路径,并将整个内容与文件名一起存储到数据库中,因此它不能用于 html <img>
标签。
如何存储图像的相对路径?或者我需要在树枝中应用一些过滤器来显示它吗?
我有一个带有字段的 EasyAdmin 表单:
- { property: 'imageFile', type: 'file_upload', type_options: { upload_dir: '/public/data/gallery/images/', upload_filename: '[uuid]-[timestamp].[extension]'}}
我正在使用内置的 EasyAdmin 文件上传器,而不是单独的捆绑包或服务:
https://symfony.com/doc/current/bundles/EasyAdminBundle/book/edit-new-configuration.html#file-upload
您可以使用虚拟字段 属性 解决此问题,在 saving/retrieving 真实字段之前处理数据。
这是我在 easy_admin.yaml
中的字段定义:
- { property: 'virtualFilename', type: 'file_upload', type_options: {upload_dir: 'public/imageswerk',upload_filename: '[uuid].[extension]' }}
这就是我的 setters/getters 在实体中的样子:
/**
* @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% 的内容或其他内容以防止像这样的硬编码路径。
我不知道如何显示通过 EasyAdmin 上传的图像。当它上传图片时,它会在服务器上显示绝对路径,并将整个内容与文件名一起存储到数据库中,因此它不能用于 html <img>
标签。
如何存储图像的相对路径?或者我需要在树枝中应用一些过滤器来显示它吗?
我有一个带有字段的 EasyAdmin 表单:
- { property: 'imageFile', type: 'file_upload', type_options: { upload_dir: '/public/data/gallery/images/', upload_filename: '[uuid]-[timestamp].[extension]'}}
我正在使用内置的 EasyAdmin 文件上传器,而不是单独的捆绑包或服务: https://symfony.com/doc/current/bundles/EasyAdminBundle/book/edit-new-configuration.html#file-upload
您可以使用虚拟字段 属性 解决此问题,在 saving/retrieving 真实字段之前处理数据。
这是我在 easy_admin.yaml
中的字段定义:
- { property: 'virtualFilename', type: 'file_upload', type_options: {upload_dir: 'public/imageswerk',upload_filename: '[uuid].[extension]' }}
这就是我的 setters/getters 在实体中的样子:
/**
* @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% 的内容或其他内容以防止像这样的硬编码路径。