在sonata管理包中列出图像

时间:2014-06-24 07:50:32

标签: php symfony sonata-admin

我是Symfony&的新手。试图在奏鸣曲管理包中列出图像。但我有点混淆如何在twig文件中获取一个对象,以便我可以得到我的图像源的确切路径。

这是我的代码

protected function configureListFields(ListMapper $listMapper)
    {
//        $image = $this->getSubject();
        $listMapper
            ->addIdentifier('caption')
                ->add('image','string', array('template' => 'swaamImageUploaderBundle:Admin:list_image.html.twig'))
        ;
    }

这是我的list_image.html.twig文件

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}

{% block field%}

    <img src="{{ 'uploads/images/822b23a922f43bb664cb58ca57de6cccccc962e5.jpeg'}}">

     {#<img src="{{  asset(image.getthumbWebPath) }}">#}


{% endblock %}

在我的图片源代码中,我为我的测试提供了一个硬代码路径。但不知道如何从db获取路径。

加上,当我只写 - &gt; add('image')在控制器中我从后端显示的db中得到我的确切路径。

我有一个实体图片。

任何能帮助我的人?​​

1 个答案:

答案 0 :(得分:10)

我想你正在使用Sonata Media Bundle

您必须使用该实体,您可以在此处找到所需的帮助:http://sonata-project.org/bundles/media/2-2/doc/reference/helpers.html

如果你需要在控制器中获得完整路径(可能很少但可能发生),你必须使用媒体服务

$mm = $this->container->get('sonata.media.manager.media');
$pr = $this->container->get('sonata.media.provider.image');
$media = $mm->findOneBy(array('id' => $idImage));
$format = $pr->getFormatName($media, 'default');
$path = $pr->generatePublicUrl($media, $format);

或使用控制器内的树枝助手

$format = 'default'; //the format you want to show
$path=$this->get('sonata.media.twig.extension')->path($image, $format);

如果您想将图像添加到Sonata Admin(您的案例)的列表字段中,您可以使用此代码

{% block field %}

        {% thumbnail object.image, 'thumb' %}

{% endblock %}

其中image是实体的图像getter方法(es getImage())