5

Sonata Admin で、sonata_type_collection のアップロードとプレビューの画像ファイルを使用したいと考えています。

私の Admin/ItemAdmin.php で:

class ItemAdmin extends Admin
{

    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('title')
            ->with('Photos')
            ->add('pictures', 'sonata_type_collection', array(
                'label' => 'Pictures',
                'by_reference' => false,
                'required' => false,
                ), array(
                'edit' => 'inline',
                'inline' => 'table',
                'sortable' => 'id'
            ))
            ->end()
        ;
    }

私の Admin/ItemPictureAdmin.php で:

class ItemPictureAdmin extends Admin {

    protected function configureFormFields(FormMapper $formMapper) {
        $obj = $this->getSubject();

        $formBuilder = $formMapper->getFormBuilder();

        if(is_object($obj) && $obj->getPicture())
        {   
            $formMapper
            ->add('picturePreview', 'image_preview', array(
                'required' => false,
                'property_path' => false,
                'upload_dir' => '/uploads/picture/',
                'file_name' => $obj->getPicture()
            ));
        }
        $formMapper->add('pictureFile', 'file', array('label' => 'Pic'));
    }

タイプ「image_preview」は、写真を表示するための単純なテンプレート twig を使用して作成した新しいタイプです。

プレビュー: http://i.stack.imgur.com/AC0ih.png

問題 1 : 2 つの異なる画像ファイルを含むデータベースに 2 つの画像が記録されていますが、リストには最初の画像のみが表示されます。

問題 2 : 写真を更新できません... レコードを削除して、新しいファイルを再度アップロードする必要があります。

4

2 に答える 2

0

私は同じ問題を抱えていて、リンク " http://symfony.com/doc/current/cookbook/form/create_form_type_extension.html " でドキュメントが提供されている "Custom Form Type Extension" を通じてこれを行うことができます。

それは完璧なソリューションです..

于 2014-07-03T15:02:40.463 に答える
0

私はIssue 1にぶつかりました。見つけたすべての可能な解決策を試しましたが、何もうまくいきませんでした。私はいくつかの解決策を試しましたが、1つは良かったです。
私がしたこと:

  • セッションに子エンティティのインデックス (あなたの場合は ItemPictureAdmin) を保存し、エンティティが必要な場合は、セッションからインデックスを取得し、親エンティティのリストからそのインデックスを持つ要素を取得します。

  • 最初に、セッション インデックス 0 に保存し、ItemPictureAdmin でインデックス 0 の ItemPictureAdmin の親リストにアクセスします。

  • この後、セッションでインデックスをインクリメントしました。リストからすべての要素を取得した後、インデックスを保存したセッション パラメーターを削除しました。

このソリューションは、ここのカポニカのソリューションを適応させたものです

于 2014-04-25T09:11:41.237 に答える