EasyAdmin 图片字段
此字段用于管理将图片上传到后端。实体属性仅存储图片的路径,而不是其二进制内容,二进制内容存储在文件中。
在表单页面(编辑和新建)中,它看起来像这样

基本信息
- 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
默认情况下,图片在只读页面(index
和 detail
)中“按原样”加载,不更改其路径。 如果您在某个路径下提供图片(例如 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 许可协议获得许可。