我对这个问题感到很困惑: 我有2个实体,Horaire(Horaire意思是附表)和HoraireLine,其中$ horaire->行是HoraireLine和$ horaireLine-> horaire是Horaire的所有者。
为了坚持我的Horaire的实体,我使用了HoraireLine的形式的HoraireLine形式的集合,但最后一个isValid()以任何方式返回false,我没有得到一旦错误。我检查了表单中的错误,并且子项形成:none。我检查实体'错误:
$validator = $this->get('validator');
$errorList = $validator->validate($this->getSeller()->getHoraire()->getLines());
然后返回一个空数组。但是form-> isValid()仍然是假的。
我没有设置详细验证器。
这是我的代码(在我的控制器中):
[...]
/*
* Horaire's form (about horaireLines)
*/
/*
* Init Horaire's lines threatment
* (for don't get null horaire line)
* @Unlegit indent
*/
if($this->getSeller()->getHoraire()->getLines()){
foreach (EnumDay::getEnum() as $k => $day) {
$this->getSeller()->getHoraire()->addLine(new HoraireLine( $this->getSeller()->getHoraire(), $day, null, null, null, null ));
}
}
$horaireForm = $this->createForm(new HoraireType(), $this->getSeller()->getHoraire());
$validator = $this->get('validator');
$errorList = $validator->validate($this->getSeller()->getHoraire()->getLines());
var_dump($errorList);
if ($horaireForm->isValid()) {
$em->persist($this->getSeller()->getHoraire());
/*foreach ($this->getSeller()->getHoraire()->getLines() as $key => $value) {
$em->persist($value);
}*/
}
[...]
$ this-> getSeller()是当前用户拥有的对象的快捷方式,由安全上下文获取。
这里是实体的yaml:
Ctx\BaoBundle\Entity\HoraireLine:
type: entity
table: null
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
am_opening:
type: time
nullable: true
am_closing:
type: time
nullable: true
pm_opening:
type: time
nullable: true
pm_closing:
type: time
nullable: true
day:
type: object
manyToOne:
horaire:
targetEntity: Horaire
inversedBy: lines
cascade: ["persist", "merge"]
joinColumn:
name: horaire_id
referencedColumnName: id
lifecycleCallbacks: { }
Ctx\BaoBundle\Entity\Horaire:
type: entity
table: null
id:
id:
type: integer
id: true
generator:
strategy: AUTO
oneToOne:
seller:
targetEntity: Seller
inversedBy: horaire
joinColumn:
name: seller_id
referencedColumnName: id
cascade: ["persist", "merge"]
oneToMany:
lines:
targetEntity: HoraireLine
mappedBy: horaire
cascade: ["persist", "merge"]
lifecycleCallbacks: { }
我使用级联:["坚持","合并"]因为我需要使用持久级联,但我不知道合并是否有用。 我将教义用于持久化实体。
感谢您提前回答,对不起,如果它是虚假错误x)
答案 0 :(得分:0)
我发现了错误,是的,这是一个虚假的错误。
我在同样情况下为下一个人发帖:
我忘了在它之后做$ horaireForm->句柄($ request)
$horaireForm = $this->createForm(new HoraireType(), $this->getSeller()->getHoraire());
不要忘记通过以下方式初始化$ request:
public function <name your action>Action(Request $request)
{
Symfony将自行设置处理表格的请求。