2015-04-07 3 views
2

У меня проблема с одной из моих форм. У меня есть документ "Ресурс" связан с 3 другими документами:Symfony2 & MongoDB: FormType документа со ссылками

  • Теги (ReferenceMany)
  • Категория (ReferenceOne)
  • Data Repository (ReferenceOne)

Вот определение моего документ:

class Resource { 

/** 
* @MongoDB\Id 
*/ 
private $id; 

/** 
* @MongoDB\String 
*/ 
private $name; 

/** 
* @MongoDB\String 
*/ 
private $description; 

/** 
* @MongoDB\ReferenceMany(targetDocument="Tag") 
*/ 
protected $tags; 

/** 
* @MongoDB\ReferenceOne(targetDocument="Category") 
*/ 
private $category; 

/** 
* @MongoDB\ReferenceOne(targetDocument="DataRepository") 
*/ 
private $dataRepository; 

/** 
* @MongoDB\file 
*/ 
private $logo; 

/** 
* @MongoDB\Boolean 
*/ 
private $available; 

А вот formType для моего документа «Ресурс»:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('name'); 
    $builder->add('description'); 
    $builder->add('logo', 'file'); 
    $builder->add('available', 'checkbox'); 
    $builder->add('category', 'document', array(
     'class' => 'AppBundle:Category' 
    )); 
    $builder->add('tags', 'document', array(
     'class' => 'AppBundle:Tag', 
     'multiple' => 'true' 
    )); 
    $builder->add('dataRepository', "document", array(
     'class' => 'PortailCatalogBundle:DataRepository' 
    )); 
} 

Сгенерированная форма совершенна, но когда я ее подаю, она, похоже, не увлажняет мое сущность как исключенное. Вот запрос:

["request"]=> 
object(Symfony\Component\HttpFoundation\ParameterBag)#7 (1) { 
    ["parameters":protected]=> 
    array(1) { 
     ["resource"]=> 
     array(7) { 
     ["name"]=> 
     string(14) "Ressource N°1" 
     ["description"]=> 
     string(28) "Juste un test parmi d'autres" 
     ["available"]=> 
     string(1) "1" 
     ["category"]=> 
     string(24) "551c02b5a246cb287c09bcde" 
     ["tags"]=> 
     array(2) { 
      [0]=> 
      string(24) "551c02b5a246cb287c09bcdc" 
      [1]=> 
      string(24) "551d0ac2a246cbe40809bc97" 
     } 
     ["dataRepository"]=> 
     string(24) "551d650aa246cb700e09bc9d" 
     ["_token"]=> 
     string(40) "4adfcc295b2305c784347311d3bbad55c260c6ed" 
     } 
    } 
    } 

Все эти ObjectIds являются правильными, но когда представляется, форма генерирует ошибки для этих 3-х документов с ошибкой «Это значение не является допустимым»

Я нашел запросы, сделанные сразу после подачи заявки:

db.category.find({ "_id": ObjectId("551e66a2a246cba51909bc9c") }); 
db.tag.find({ "_id": ObjectId("551e66a2a246cba51909bc9d") }); 
db.dataRepository.find({ "_id": ObjectId("551e66a2a246cba51909bc9e") }); 

Как вы можете видеть, объекты не совпадают. Мне кажется, что я испортил часть определения formType.

Я не нашел документации для этого вида формы в DoctrineMongoDBBundle ... Ссылка на любую идею или документацию?

спасибо.

ответ

0

В моем исходном коде не было ничего плохого. Я сделал обновление для композитора доктрины/доктрины-odm.

Смежные вопросы