Symfony2& MongoDB:带引用的文档的FormType

时间:2015-04-07 08:36:08

标签: php forms mongodb symfony

我的某个表单有问题。我有一个"资源"与其他3份文件相关的文件:

  • 标签(ReferenceMany)
  • 类别(ReferenceOne)
  • 数据存储库(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") });

如您所见,objectIds不匹配。我觉得我搞砸了formType定义部分。

我在DoctrineMongoDBBundle中找不到这种表单的任何文档... 任何想法或文档链接?

谢谢。

1 个答案:

答案 0 :(得分:0)

我的源代码没有任何问题。我做了 doctrine / doctrine-odm 包的作曲家更新,表格按预期工作(显然是添加了包的提交)。