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

基本信息
- PHP Class:
EasyCorp
\Bundle \EasyAdminBundle \Field \ImageField - Doctrine DBAL Type used to store this value:
string
- Symfony Form Type used to render the field:
FileUploadType
, a custom form type created by 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 许可下获得许可。