如何将PunkAveFileUploaderBundle添加到sonata管理包中

时间:2013-09-30 12:19:23

标签: symfony file-upload sonata-admin

嗯......一切都在标题中,我在这里因为关于这个主题的文档确实不存在。所以我希望一些忍者开发者能够给我一些提示......

我正在研究我的个人作品集(Symfony 2.3),因为我有几个星期的问题。我使用sonata管理包来创建我的管理面板,并且在我的管理员中修复不同的文件上传有很多麻烦。为此,我想知道使用PunkAveFileUploaderBundle.但老实说,我不知道如何正确实现它。我想我必须编辑一些奏鸣曲管理员文件但是又来了......哪些?我正在阅读这些文件,并且已经很好地了解了哪些文件要进行调整但根本不确定..通过阅读并遵循sonata admin (sonata doc)的文档,我从未取得过成功。不知道为什么我我实际上是一步一步地跟着它。

如果你们中的任何人都知道如何使用sonata admin bundle实现PunkAveFileUpload包,请告诉我你的提示,或者更好,一个小例子......

PS:不需要指向文档的链接,谢谢。

1 个答案:

答案 0 :(得分:0)

您可以阅读有关getting Gedmo Uploadable working with Sonata Admin

的帖子

我认为您必须在管理类中传递punk_ave.file_uploader服务:

acme.admin.demo:
    class: Acme\DemoBundle\Admin\DemoAdmin
    arguments: [~, Acme\DemoBundle\Entity\Demo, SonataAdminBundle:CRUD, @punk_ave.file_uploader]
    tags:
        - {name: sonata.admin, manager_type: orm, group: demo, label: demo}
    calls:
        - [ setTranslationDomain, [SonataAdminBundle]]

更改您的DemoAdmin课程以管理上传:

class DemoAdmin extends Admin
{
    /**
     * File uploader
     */
    private $fileUploader = null;

    /**
     * Constructor
     */
    public function __construct($code, $class, $baseControllerName, $fileUploader = null)
    {
        parent::__construct($code, $class, $baseControllerName);
        $this->fileUploader = $fileUploader;
    }

    // ...

    public function prePersist($object)
    {
        $this->manageUploads($object);
    }

    public function preUpdate($object)
    {
        $this->manageUploads($object);
    }

    /**
     * Mannger uploads
     * @param Demo $object
     */
    private function manageUploads($object)
    {
        if ($object->getId()->getFile()) {
            $this->fileUploader->syncFiles(...);
        }
    }
}

我真的不知道这是否会奏效,但这就是我试图让它发挥作用的方式......