2016-11-23 18 views
1

私は単純な1対多関係を持っています。 私は、次のSonataAdminクラスを追加する場合:原因のリストの番号の多くにSonataAdmin sonata_type_model多くの行がスローされますOutOfMemoryException

class BookingAdmin extends Admin 
{ 
... 

    $formMapper 
    ->add(
     'listing', 
     null, 
     array(
      'disabled' => true, 
     ) 
    ), 
... 

のOutOfMemoryExceptionがスローされます。 選択リストを使用せずにフォームにリスティングタイトルを表示することにより、このエラーを回避する方法を知りたいと思います。

答えて

1

あなたはこれらのケースのための'sonata_type_model_autocomplete'フォームタイプ(Ref.)使用することができます

class BookingAdmin extends AbstractAdmin 
{ 
    protected function configureFormFields(FormMapper $formMapper) 
    { 
     // the dropdown autocomplete list will show only Booking 
     // entities that contain specified text in "title" attribute 
     $formMapper->add('listing', 'sonata_type_model_autocomplete', array(
      'property' => 'title' 
     )); 
    } 
} 

をこの1つのウィジェットを移入するために、すべての行を照会する避けることができます。

0

私はYonelよりも別の解決策を見つけました。 このソリューションでは、選択ウィジェット内の永続的な予約エンティティの現在のリストを取得するだけです。これは、リストを変更しない場合にのみ便利です。

class BookingAdmin extends Admin 
{ 
    ... 

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

     $formMapper 
      ->add(
       'listing', 
       'sonata_type_model', 
       array(
        'query' => $this->modelManager 
         ->getEntityManager('Bundle:Listing') 
         ->getRepository('Bundle:Listing') 
         ->find(
          $listing->getId() 
         ), 
        'disabled' => true, 
       ) 
      ); 
      ... 
関連する問題