Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] admin 1.2 modyfikacja executeUpdate(), kasuje relacje
Foxx
post
Post #1





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Chciałbym aby podczas zmiany statusu zamówienia w wygenerowanym adminie zmieniał się automatycznie status wszystkich produktów składających się na to zamówienie.

Stworzyłem więc w pliku backend/modules/zamowienie/actions/actions.class.php metodę executeUpdate() i dodałem kod, który ma to zrobić, tzn. zmodyfikować produkty powiązane z edytowanym właśnie zamówieniem.

Problem polega na tym, że gdy ta metoda się wykonuje to statusy produktów co prawda się zmieniają, ale jednocześnie są kasowane relacje zamowienie_produkt z bazy. Więc kończę ze zmienonym zamówieniem (OK), zmienionymi produktami (OK), ale ze skasowanymi powiązaniami zamówienia z produktami (NIE OK). Będę wdzięczny za wskazówki co robię niewłaściwie.

Moja metoda executeUpdate() wygląda tak:

  1. class zamowienieActions extends autoZamowienieActions
  2. {
  3. public function executeUpdate(sfWebRequest $request)
  4. {
  5. $zamowienie = $this->getRoute()->getObject();
  6. $formularz = $request->getParameter('zamowienie');
  7.  
  8. if($formularz['zamowienie_status_id'] != $zamowienie->getZamowienieStatusId())
  9. {
  10. # zmieniono status zamówienia
  11. if(ZamowienieStatusPeer::retrieveByPk($formularz['zamowienie_status_id'])->getSlug() == 'rozliczone')
  12. {
  13. foreach($zamowienie->getZamowienieProdukts() as $produkt)
  14. {
  15. $c = new Criteria();
  16. $c->add(ProduktStatusPeer::SLUG, 'sprzedany');
  17. $produkt->getProdukt()->setProduktStatus(ProduktStatusPeer::doSelectOne($c));
  18. $produkt->getProdukt()->save();
  19. }
  20. }
  21. }
  22.  
  23. parent::executeUpdate($request);
  24. }
  25. }


Ok, rozwiązałem problem. Patrząc na jego przyczynę widzę, że po tym co napisałem nie dało mi się pomóc smile.gif
Otóż wyświetlałem sobie pod formularzem edycji zamówienia partial z listą produktów. Ale nigdzie nie wyświetlałem widgetu zamowienie_produkt_list wobec czego wyglądało jakbym zawsze odznaczał wszystkie powiązania przed wysłaniem formularza. Efektem było kasowanie relacji łączących zamówienie z produktem. Pozdrawiam.
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 Aktualny czas: 19.08.2025 - 10:44