Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [symfony]1.4 Doctrine - relacja 1:m
arturo23
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.02.2012

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


Witam,

są sobie dwie tabele np.: Artykuły i Kategorie w relacji 1:m czyli kategoria ma wiele artykułów a artykuł ma jedna kategorie. Kiedy utworze CRUD w symfony wszystko działa jak powinno czyli kiedy chce dodać artykuł mam na rozwijanej liście kategorie.

Ale kiedy dodaje kategorie mam tylko możliwość dodania nazwy kategorii, a chciałbym żeby można było od razu przypisac nowo dodawana kategorie do istniejących artykułów. Podobnie z edycja - chce poza możliwością edycji nazwy kategorii wyedytowac przypisanie do artykułów...

Jak się za to zabrać...?
Go to the top of the page
+Quote Post
Valantir
post
Post #2





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 6.09.2011
Skąd: Olsztyn

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


Zrób sobie formularz, który będzie Ci generował krotki np typu checkbox lub innego i po wybraniu krotek, do których ma zostać przypisana kategoria klikasz np zapisz. To jeżeli chodzi o widok. Następnie w akcji w pętli dodajesz albo aktualizujesz wpisy odnośnie krotek, które zostały wybrane i wsio:)
Go to the top of the page
+Quote Post
arturo23
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.02.2012

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


Witam, dziekuje za wskazowki...
pora przejsc od slow do czynow, i z tego co zrozumialem i wygooglowalem zrobilem tak:
  1. // --- schema.yml
  2. options:
  3. type: InnoDB
  4. collate: utf8_polish_ci
  5. charset: utf8
  6.  
  7. Article:
  8. columns:
  9. title: { type: string(255), notnull: true }
  10. content: { type: string }
  11. category_id: { type: integer }
  12. relations:
  13. Category:
  14. local: category_id
  15. foreign: id
  16. onDelete: CASCADE
  17. foreignAlias: Articles
  18.  
  19. Category:
  20. columns:
  21. title: { type: string(50), notnull: true }


Utworzylem plik w /lib/form/doctrine/EmbedArticleForm.class.php, ktory zawieral:
  1. <?php
  2. class EmbedArticleForm extends ArticleForm
  3. {
  4.  
  5. public function configure()
  6. {
  7. $this->useFields(array('title'));
  8. }
  9. }


W pliku /lib/form/doctrine/CategoryForm dalem:
  1. class CategoryForm extends BaseCategoryForm
  2. {
  3. public function configure()
  4. {
  5. $this->embedRelation('Articles','EmbedArticleForm');
  6. }
  7. }

... a w "formie" dla modelu Kategorii /frontend/modules/templates/_form.php mialem nadzieje spotkac (IMG:style_emoticons/default/biggrin.gif) artyukuly i obsluzyc mniej wiecej tak:
  1. ...
  2. foreach ($form['Articles'] as $art): ?>
  3. <?php endforeach; ?>


ale nic z tego nie wyszlo :/ ?
tzn. wyszlo ale nie to czego oczekiwalem... chcialbym miec mozliwosc zaznaczania na checkboxach przynaleznosci a nie jednoczesnej edycji przypisanych artykulow :/
Bede wdzieczny za wskazowki.

Ten post edytował arturo23 17.02.2012, 11:05:48
Go to the top of the page
+Quote Post
Valantir
post
Post #4





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 6.09.2011
Skąd: Olsztyn

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


Nie pracowałem pod Doctrine... Raczej pod Propelem, więc w zawartości raczej nie pomogę.
Cytat
chcialbym miec mozliwosc zaznaczania na checkboxach przynaleznosci a nie jednoczesnej edycji przypisanych artykulow :/

Co masz na myśli? Może podaj przykład jakiś z życia wzięty np? Bo tak ciężko mi jest zrozumieć.
Wiem, że podczas wprowadzania kategorii chcesz zaznaczyć artykuły, które będą przypisane do tej kategorii. tak?
Go to the top of the page
+Quote Post
arturo23
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.02.2012

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


Po godzinach googlowania doszedlem do tego:
Jak dodaje Artykul mam:
(IMG:http://fx1.pl/z1.png)
... to jest CRUD bez zmian i jest OK.

Teraz kiedy dodaje Kategorie:
Na razie doszedlem do tego...
(IMG:http://fx1.pl/z2.png)
I generalnie oto chodzi ale...

Jak zapisac teraz te dane ?
Rozumiem, ze mam nadpisac metode save() a w niej usunac przypisane do kategorii artykuly a pozniej w petli dodac spowrotem te zaznaczone ?
Pytanie jak i gdzie ?

Drugie pytanie to wydaje mi sie, ze malo elegancko dodalem te artykuly bo zrobilem tak:
  1. class CategoryForm extends BaseCategoryForm
  2. {
  3. public function configure()
  4. {
  5. $this->widgetSchema['article_list'] = new sfWidgetFormDoctrineChoice(array(
  6. 'model' => 'Article',
  7. 'multiple' => true,
  8. 'expanded' => true
  9. ));
  10.  
  11. $q = Doctrine_Query::create()->select('a.id')->from('Article a')->where('a.category_id = ?', $this->getObject()->getId());
  12. $ret = $q->fetchArray();
  13. $z = null;
  14. foreach ($ret as $r) {
  15. $z[] = $r['id'];
  16. }
  17. $this->setDefault('article_list',$z);
  18.  
  19. $this->validatorSchema->setOption('allow_extra_fields', true); // na razie bez walidacji...
  20. }
  21. }

co prawda dziala ale pisane to troche na wyczucie i po omacku - a zalezy mi aby zrobic to "zgodnie ze sztuka"... wiec jesli by ktos na to spojrzal i ewentualnie poprawil lub wskazal droge...


Go to the top of the page
+Quote Post
Valantir
post
Post #6





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 6.09.2011
Skąd: Olsztyn

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


Z tego co wiem, to metoda save() powinna załatwić to za Ciebie. Zaznaczasz i wciskasz przycisk. A metoda save() sama sprawdza czy taki rekord istnieje w bazie czy nie. Jeżeli tak, to update, jeżeli nie, to insert.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 05:28