跳到内容

EasyAdmin 图片字段

编辑此页

此字段用于管理将图片上传到后端。实体属性仅存储图片的路径,而不是其二进制内容,二进制内容存储在文件中。

表单页面(编辑和新建)中,它看起来像这样

Default style of EasyAdmin image field

基本信息

  • PHP 类: EasyCorp\Bundle\EasyAdminBundle\Field\ImageField
  • Doctrine DBAL 类型 用于存储此值: string
  • Symfony 表单类型 用于渲染此字段: FileUploadType,EasyAdmin 创建的自定义表单类型
  • 渲染为:

    1
    2
    <!-- when loading the page this is transformed into a dynamic widget via JavaScript -->
    <input type="file">

选项

setBasePath

默认情况下,图片在只读页面(indexdetail)中“按原样”加载,不更改其路径。 如果您在某个路径下提供图片(例如 uploads/images/),请使用此选项进行配置

1
yield ImageField::new('...')->setBasePath('uploads/images/');

setUploadDir

默认情况下,上传图片的內容存储在 <your-project-dir>/public/uploads/images/ 目录中的文件中。 使用此选项可更改该位置。 参数是相对于项目根目录的目录

1
yield ImageField::new('...')->setUploadDir('assets/images/');

setFileConstraints

默认情况下,上传的文件使用空的 Image 约束进行验证(这意味着它仅验证上传的文件是否为图片类型)。 使用此选项可定义应用于上传文件的约束

1
yield ImageField::new('...')->setFileConstraints(new Image(maxSize: '100k'));

setUploadedFileNamePattern

默认情况下,上传的图片以与原始文件相同的文件名和扩展名存储。 使用此选项可在上传后重命名图片文件。 作为参数传递的字符串模式可以包含以下特殊值

  • [day],当前日期的日部分(通过 date('d') 获取)
  • [month],当前日期的月部分(通过 date('m') 获取)
  • [year],当前日期的年部分(通过 date('Y') 获取)
  • [timestamp],当前时间戳(通过 time() 获取)
  • [name],上传文件的原始名称
  • [slug],上传文件原始名称的 slug(使用 Symfony String 组件生成)
  • [extension],上传文件的原始扩展名(例如 png
  • [contenthash],原始文件内容的 SHA1 哈希值
  • [randomhash],与原始文件内容没有任何关联的随机哈希值
  • [uuid],随机 UUID v4 值(使用 Symfony Uid 组件生成)
  • [ulid],随机 ULID 值(使用 Symfony Uid 组件生成)

您可以以任何方式组合它们

1
yield ImageField::new('...')->setUploadedFileNamePattern('[year]/[month]/[day]/[slug]-[contenthash].[extension]');

此方法的参数也接受一个闭包,该闭包将 Symfony 的 UploadedFile 实例作为其第一个参数接收

1
2
3
yield ImageField::new('...')->setUploadedFileNamePattern(
    fn (UploadedFile $file): string => sprintf('upload_%d_%s.%s', random_int(1, 999), $file->getFilename(), $file->guessExtension()))
);
本作品,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议获得许可。
目录
    版本