1

画像 (Sonata Media Bundle の Media エンティティ) をアップロードし、それをユーザー (Sonata User Bundle の Vendor エンティティ) にマッピングしています。画像がアップロードされ、メディア テーブルのエントリが作成され、メディア エントリのキーがユーザー テーブルに追加されます。エラーは発生しませんでした。しかし、フォームを開いてユーザーを編集すると、ファイル入力ボタンの近くに画像プレビューもファイル名も表示されません。あたかもアソシエーション ファイル ユーザーがフォームによって認識されないかのように。これが私のコードです:

/app/config/config.yml:

sonata_media:
  contexts:
    vendor:
        providers:
            - sonata.media.provider.image
            - sonata.media.provider.file
        formats:
            small_square: { width: 104, height: 104, quality: 70}
            small_portrait: { height: 119, quality: 90}
            small: { width: 100 , quality: 70}
            big:   { width: 1000 , quality: 70}

/src/Application/Sonata/UserBundle/Admin/VendorAdmin.php :

protected function configureFormFields(FormMapper $formMapper)
{
     ...
     $formMapper
          ->with('Gallery', array('class' => 'gallery'))
            ->add('userRatingFile', 'sonata_media_type', array('label' => 'Images', 'required' => false,
                'cascade_validation' => true,
                'context' => 'vendor',
                'provider' => 'sonata.media.provider.image'
            ))
            ->end();
      ...
}

private function doPreLogic($vendor)
{
    ...
    $vendor->setUserRatingFile($vendor->getUserRatingFile());
}

/src/Application/Sonata/UserBundle/Resources/config/doctrine/UserType.Vendor.orm.xml :

<one-to-one field="userRatingFile" target-entity="Application\Sonata\MediaBundle\Entity\Media">
    <cascade>
        <cascade-all/>
    </cascade>
    <join-column name="userRatingFile_id" referenced-column-name="id" />
</one-to-one>

何が欠けていますか?アップロードしたファイルのプレビューを追加するにはどうすればよいですか?

4

1 に答える 1

1

小枝を設定する必要があります:

# Twig Configuration
twig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%"
        form:
            resources:
                #...
                - SonataMediaBundle:Form:media_widgets.html.twig
于 2015-07-25T02:02:06.110 に答える