rid / image-bundle
处理文件上传,创建和管理缩略图 Symfony2
dev-master
2013-10-20 16:54 UTC
Requires
- php: >=5.3.2
- doctrine/orm: >=2.3
- imagine/imagine: v0.4.1
- symfony/symfony: >=2.3,<3.0
Requires (Dev)
This package is not auto-updated.
Last update: 2020-01-05 15:39:39 UTC
README
完整文档即将推出...
工作原理
- 在数据库中以字符串形式存储文件名
- 将PHP字段表示从字符串替换为RidImage
- 自动将配置注入到RidImage中
- 根据配置自动处理上传的文件
- 配置文件中的最大参数数量(不在实体、服务或模板中)
Twig 示例
# config.yml: rid_image: presets: user_avatars: path: uploads/user/avatars/ default: image/default-user-avatar.png thumbnails: medium: default: image/default-user-avatar-90.png width: 90 height: 90 type: inset tiny: default: image/default-user-avatar-30.png width: 30 height: 20 type: outbound fields: Some\Bundle\Entity\User: avatar: user_avatars
// Twig: // simply find user and then: {{ asset(user.avatar) }} // /uploads/user/avatars/random_name.jpg (full size) {{ asset(user.avatar.small) }} // /uploads/user/avatars/small_random_name.jpg (90x90) {{ asset(user.avatar.tiny) }} // /uploads/user/avatars/tiny_random_name.jpg (30x20) // if image field is empty: {{ asset(user.avatar) }} // /image/default-user-avatar.png {{ asset(user.avatar.small) }} // /image/default-user-avatar-90.png {{ asset(user.avatar.tiny) }} // /image/default-user-avatar-30.png
安装
- Composer: "rid/image-bundle": "dev-master",
- AppKernel: new Rid\Bundle\ImageBundle\RidImageBundle(),
- Config.yml
doctrine: dbal: types: rid_image: Rid\Bundle\ImageBundle\DBAL\Types\RidImageType rid_file: Rid\Bundle\ImageBundle\DBAL\Types\RidFileType mapping_types: rid_image: rid_image rid_file: rid_file rid_image: presets: # here you can create as many presets as you need somePresetName: path: uploads/category/ thumbnails: small: # define eny name for thumbnails width: 120 height: 70 # add more thumbnails fields: Some\Bundle\Entity\Category: fieldName: somePresetName # add more fields # add more classes
第4步:在您的实体类中
namespace Some\Bundle\Entity\Category; use Doctrine\ORM\Mapping as ORM; use Rid\Bundle\ImageBundle\Model\RidImage; / * @ORM\Table() * @ORM\Entity() */ class Category { / * @ORM\Column(type="rid_image", length=255, options={"default" = ""}) */ protected $image; public function __construct() { $this->image = new RidImage(); } public function getImage() { return $this->image; } public function setImage($image) { $this->image = $image; } }
第5步:在表单构建器中设置字段类型
->add('image', 'rid_image')
也实现了
- 手动处理上传的文件
- 事件
未来
- 前端小部件(jcrop)
- 从URL获取
- 更多测试