smart-information-systems / file-bundle
文件包
v1.0
2016-03-02 10:36 UTC
Requires
- imagine/imagine: ~0.6.0
This package is not auto-updated.
Last update: 2024-09-24 17:30:39 UTC
README
要求
- php 7
- symfony 3
安装
- 在
composer.json
中指定包和仓库链接
{ // ... "require": { // ... "SmartInformationSystems/file-bundle": "dev-master" }, "repositories": [ { "type" : "vcs", "url" : "https://github.com/SmartInformationSystems/FileBundle.git" } ] }
- 在
app/AppKernel.php
中包含此包
class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new SmartInformationSystems\FileBundle\SmartInformationSystemsFileBundle(), // ... ); } }
- 在
app/config/config.yml
中指定配置
smart_information_systems_file: storage: type: filesystem params: path: '%kernel.root_dir%/../web/storage' url: 'https:///storage'
使用
将图片添加到实体
- 在 Entity 中添加字段
use SmartInformationSystems\FileBundle\Entity\Image; use SmartInformationSystems\FileBundle\Annotations as Files; class Brand { /** * Логотип * * @var Image * * @ORM\OneToOne(targetEntity="SmartInformationSystems\FileBundle\Entity\Image", cascade="all") * @ORM\JoinColumn(name="logo_id", referencedColumnName="id", nullable=true) * * @Files\Image( * width=370, height=210, * previews={ * @Files\Image\Preview(name="admin", width=100, height=100), * } * ) */ private $logo; }
- 将更改应用到数据库
php binv/console doctrine:schema:update
将图片集合添加到实体
- 添加新的实体
use SmartInformationSystems\FileBundle\Entity\Image; use SmartInformationSystems\FileBundle\Annotations as Files; class ProductImage { /** * Товар * * @var Product * * @ORM\ManyToOne(targetEntity="Product", inversedBy="images") * @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=false) */ private $good; /** * Изображение. * * @var Image * * @ORM\OneToOne(targetEntity="SmartInformationSystems\FileBundle\Entity\Image", cascade="all") * @ORM\JoinColumn(name="image_id", referencedColumnName="id", nullable=false) * * @Files\Image( * width=700, height=700, * previews={ * @Files\Image\Preview(name="admin", width=100, height=100, crop=true), * @Files\Image\Preview(name="small", width=65, height=65, crop=true), * @Files\Image\Preview(name="medium", width=250, height=250, crop=true) * } * ) */ private $image; }
- 将更改应用到数据库
php binv/console doctrine:schema:update
在 Sonata Admin 中输出图片
元素列表
- 在 Admin 类中添加字段
class BrandAdmin extends AbstractAdmin { $listMapper->add('logo', 'string', [ 'template' => 'SmartInformationSystemsFileBundle:sonata-admin:list_image.html.twig', ]); }
编辑表单
- 在
app/config/config.yml
中添加模板
twig: form_themes: - 'SmartInformationSystemsFileBundle:Form:fields.html.twig'
- 在 Admin 类中添加字段
use SmartInformationSystems\FileBundle\Form\Type\FileType; class BrandAdmin extends AbstractAdmin { protected function configureFormFields(FormMapper $formMapper) { $formMapper->add('logo', FileType::class, [ 'entity_class' => Brand::class, 'data_class' => Image::class, 'required' => false, ]); } }