我是Symfony的新手并试图在sonata管理包中列出图像.但我有点混淆如何在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%} {##} {% endblock %}
在我的图像源标签中,我为测试提供了硬编码路径.但不知道如何从db获取路径.
另外,当我只写 - >添加('图像')在控制器中我从后端显示的db获取我的确切路径.
我有一个实体图像.
谁能帮帮我?
我想你正在使用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())