Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Symfony 1.4 - domyślna wartość klucza obcego, dodawanie nowego obiektu
damianooo
post 25.09.2012, 14:30:59
Post #1





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował damianooo 25.09.2012, 14:31:55
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.06.2025 - 19:49