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:
public function executeNew(sfWebRequest $request) { $this->form = new MyTestForm(); }
W akcji "Save" mam tak:
$this->form = new MyTestForm(); $this->form->bind($request->getParameter('test')); if ($this->form->isValid()) { $this->form->save(); }
próbowałem w akcji "New" zrobić tak:
$this->form->setDefault('app_id',3);
ale nie działa
próbowałem również w samym formularzu zrobić tak:
$this->setDefault('app_id',3);
przy:
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:
$this->widgetSchema['app_id'] = new sfWidgetFormInputHidden();
w akcji "New" tak:
$this->form = new MyTestForm(); $this->form->setDefault('app_id',3);
a w akcji "Save" tak:
$this->form = new MyTestForm(); $this->form->bind($request->getParameter('test')); if ($this->form->isValid()) { $test = $this->form->getObject(); $test->merge($this->form->getValues()); $test->save(); }