我的某个表单有问题。我有一个"资源"与其他3份文件相关的文件:
以下是我的文件的定义:
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中找不到这种表单的任何文档... 任何想法或文档链接?
谢谢。
答案 0 :(得分:0)
我的源代码没有任何问题。我做了 doctrine / doctrine-odm 包的作曲家更新,表格按预期工作(显然是添加了包的提交)。