rid/image-bundle

处理文件上传,创建和管理缩略图 Symfony2

安装: 66

依赖项: 0

建议者: 0

安全: 0

星星: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

dev-master 2013-10-20 16:54 UTC

This package is not auto-updated.

Last update: 2020-01-05 15:39:39 UTC


README

提供上传文件处理和缩略图创建,干净的模板和灵活的配置。 Build Status

完整文档即将推出...

工作原理

  1. 在数据库中以字符串形式存储文件名
  2. 将PHP字段表示从字符串替换为RidImage
  3. 自动将配置注入到RidImage中
  4. 根据配置自动处理上传的文件
  5. 配置文件中的最大参数数量(不在实体、服务或模板中)

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

安装

  1. Composer: "rid/image-bundle": "dev-master",
  2. AppKernel: new Rid\Bundle\ImageBundle\RidImageBundle(),
  3. 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获取
  • 更多测试