2015-03-17 3 views
0

Я немного путаюсь по этой проблеме: У меня есть 2 объекта, Horaire (Horarire mean Schedule) и HoraireLine, где $ horaire-> - это массив HoraireLine и $ horaireLine-> horaire - владелец Horaire.symfony 2 form validation (без ошибок)

Для сохранения сущностей Horaire я использую коллекцию формы HoraireLine в форме Horaire, но последний из них isValid() возвращает false любым способом, и я не получил один раз ошибку. Я проверил ошибки в форме, а childs form: 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: { } 

Я использую каскад: [ «сохраняются», «слияние»], потому что мне нужно было использовать упорствовать каскад, но я не знаю, если слияние полезно , Я использую доктрину для сохраняющейся сущности.

Спасибо за заранее за ответ и извините, если это фиктивная ошибка х)

ответ

0

я нашел ошибку и да, это была фиктивная ошибка.

я выкладываю для следующих ребят в той же ситуации:

Я просто забыть сделать horaireForm-> ручки ($ запрос) на $ после того, как

$horaireForm = $this->createForm(new HoraireType(), $this->getSeller()->getHoraire()); 

Не забудьте инициализировать запрос $ посредством этого:

public function <name your action>Action(Request $request) 
{ 

Symfony самостоятельно установит $ request для обработки ваших форм.