Witam,

Mam następującą sytuację w Symfony:

Mam w bazie tabelę "test" oczywiście zmapowaną na model obiektowy. W tabeli znajduję się klucz obcy o nazwie app_id .

Problem jest następujący. Przy próbie dodania nowego rekordu dostaję komunikat:

Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`costam`.`test`, CONSTRAINT `test_app_id_app_id` FOREIGN KEY (`app_id`) REFERENCES `app` (`id`))

W akcji "New" mam tak:

  1. public function executeNew(sfWebRequest $request)
  2. {
  3. $this->form = new MyTestForm();
  4. }


W akcji "Save" mam tak:

  1. $this->form = new MyTestForm();
  2. $this->form->bind($request->getParameter('test'));
  3. if ($this->form->isValid()) {
  4. $this->form->save();
  5. }



próbowałem w akcji "New" zrobić tak:

  1. $this->form->setDefault('app_id',3);


ale nie działa

próbowałem również w samym formularzu zrobić tak:

  1. $this->setDefault('app_id',3);


przy:

  1. unset($this->validatorSchema['app_id']);
  2. unset($this->widgetSchema['app_id']);


ale również nie działa


Wiem że sprawa wydaje się być prosta. Trochę niestety błądzę, pewnie nie potrzebnie. Proszę o podpowiedź jak to powinienem zrobić. Oczywiście tam gdzie wstawiam "z palaca" wartość "3" to chciałbym żeby była wartość taka jaka jest domyślnie.

dzięki

















dobra działa .. zrobić to należało tak:

w formularzu MyTestForm zrobić pole HIDDEN na app_id tak:

  1. $this->widgetSchema['app_id'] = new sfWidgetFormInputHidden();


w akcji "New" tak:

  1. $this->form = new MyTestForm();
  2. $this->form->setDefault('app_id',3);


a w akcji "Save" tak:

  1. $this->form = new MyTestForm();
  2. $this->form->bind($request->getParameter('test'));
  3. if ($this->form->isValid()) {
  4. $test = $this->form->getObject();
  5. $test->merge($this->form->getValues());
  6. $test->save();
  7. }