October/Winter CMS上传图片和文件File Attachments
OctoberCMS上传图片的实现方法用$attachOne
和$attachMany
两个系统内置的model
:
单文件上传
public $attachOne = [ 'avatar' => 'System\Models\File' ];
多个文件上传
public $attachMany = [ 'photos' => 'System\Models\File' ];
需要说明的是OctoberCms的文件上传是通过Models
中fields.yaml
文件添加Widgets
类型的字段来实现的,而Widgets
是系统内置工具,因此是不需要为数据表独立添加相关字段的。
接下来需要在对应的Model
中设置Relation
,如果图片只上传一个则设置为$attachOne
,多个则使用$attachMany
(官方文档)
public $attachOne = [ 'poster' => 'System\Models\File' ];
最终效果
图片文件在前端调用
原始尺寸图片
{{ record.poster.path }}
裁剪200x200的缩略图
{{ record.poster.thumb(200, 200, {'mode':'crop'} }}
固定宽度200
{{ record.poster.thumb(200, auto) }}
$attachMany
多个图片/文件的调用
{% for image in record.gallery %} <a href="{{ image.path }}"><img src="{{ image.thumb(200, 200, {'mode':'crop'} }}" /></a> {% endfor %}