2016-07-11 6 views
0

私はユーザーエンティティ(アバター)でメディアを使用しています。urata @ sonata_type_model_listからカテゴリを削除する方法@admin_sonata_media_media_create

最初はsonata_media_typeを使用しました。それはうまくいった。

問題は私がManyToOneを使用しているので、管理者がリストから1つを選択できることです。これを達成するには、sonata_type_model_listを使用する必要があります。これにはlist、new、deleteアクションがあります。私は 'btn_delete' => ''で削除を削除しました。ここでリストアクションはうまくいきます(今まで)。

実際の問題は新しい対応です。新しいアクションウィンドウはajaxからロードされ、ファイル/参照、カテゴリ(2つのフィールド)があります。

ここでは、カテゴリフィールドを完全に削除する(リスト、新規、削除)が必要です。なぜ私たちはこれが必要なのですか?それは役に立たないから!

  • リスト - 'link_parameters'の 'context' => 'profile'のみを表示します。だから、ここでLISTアクションは役に立たない。
  • NEW - 新しいアクションで新しいコンテキストを作成できますが、今すぐ LISTに表示されません。だから私はこれを必要としません。必要ならば ClassificationBundleから作成します。
  • DELETE - 削除アクションは効果がありません(今すぐ - こちら)。

enter image description here

MY-研究:

私は、テンプレートを変更しようとした - しかし、私は、正しい小枝ファイルを見つけることができません。それはparent()を指しています - 管理バンドルを指しています!

妥当性確認へファイル/参照 - 私は独自のImageProviderを作成しました。

カテゴリフィールド(画像の確認)を削除しようとしましたが、失敗しました。

私のコードは次のとおりです。

class ImageProvider extends BaseProvider{...} 
     public function buildCreateForm(FormMapper $formMapper) { 
// This works - changed File/Reference to ok 
      $formMapper->add('binaryContent', 'file', array('label' => 'ok', 
       'constraints' => array(
        new NotBlank(), 
       ), 
      )); 
// This works - added a new text field 
      $formMapper->add('context', 'text', ['attr' => ['class' => 'fz_rocks']]); 
// This not working - also ->add('category') - has no effect even when attr=hide and so on.. 
      $formMapper->remove('category'); 
     } 

-

答えて

0

私はcategoyフィールドを隠すことで解決しました。私が完全に削除した場合、時々問題が発生します。安全は隠すことです。私は

namespace Application\Sonata\MediaBundle\Provider; 
class ImageProvider extends BaseProvider { 
    public function buildCreateForm(FormMapper $formMapper) { 
     $formMapper->add('binaryContent', 'file', ['label' => 'Upload a new file', 'constraints' => [new NotBlank(), new NotNull()]])->end(); 
     $formMapper->with('General', ['class' => 'hidden'])->add('category'); 
    } 
    public function buildEditForm(FormMapper $formMapper) { 
     parent::buildEditForm($formMapper); 
     $formMapper->add('binaryContent', 'file', ['label' => 'Upload a new file', 'required' => FALSE])->end(); 
     $formMapper->with('General', ['class' => 'hidden'])->add('category'); 
    } 
} 
creating_a_provider_class.rstソナタメディアドキュメントごとに、カスタムプロバイダを使用し、これを達成するために

0

メディアポップアップ

  • からカテゴリフィールドを削除するにはあなたの作成クラス・パラメータにsonata.media.admin.media.class
  • をオーバーライドすることによって、メディア管理のクラスをオーバーライドする必要がありますソナタメディアの基本管理クラスで拡張することができます。
  • オーバーライドconfigureFormFields()方法
  • あなたの管理者クラスで定義することにより、削除カテゴリフィールド$formMapper

オーバーライドソナタメディアクラス

parameters: 
    sonata.media.admin.media.class: Your\MediaBundle\Admin\ORM\MediaAdmin 

メディア管理クラスから

namespace Your\MediaBundle\Admin\ORM; 

use Sonata\MediaBundle\Admin\ORM\MediaAdmin as Admin; 
// .. Other use statements 

class MediaAdmin extends Admin { 

    /** 
    * {@inheritdoc} 
    */ 
    protected function configureFormFields(FormMapper $formMapper) { 
     $media = $this->getSubject(); 

     if (! $media) { 
      $media = $this->getNewInstance(); 
     } 

     if (! $media || ! $media->getProviderName()) { 
      return; 
     } 

     $formMapper->add('providerName', 'hidden'); 

     $formMapper->getFormBuilder()->addModelTransformer(new ProviderDataTransformer($this->pool, $this->getClass()), true); 

     $provider = $this->pool->getProvider($media->getProviderName()); 

     if ($media->getId()) { 
      $provider->buildEditForm($formMapper); 
     } else { 
      $provider->buildCreateForm($formMapper); 
     } 

    } 

} 
関連する問題