Yii Framework Forum: Użycie klas CModel (CActiveRecord, CFormModel) - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Użycie klas CModel (CActiveRecord, CFormModel) Rate Topic: -----

#1 User is offline   gilek 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 11-September 09

Posted 07 June 2010 - 02:10 PM

Cześć,

Mam pytanie odnośnie użycia klas CModel, możliwe, że trochę głupie, ale podobno, nie ma takich:P

Wygenerowałem formularze CRUD, na podstawie modelu User (dziedziczy z CActiveRecord):

+---------------------+
| users               |
+---------------------+
| id (PK) int(11)     |
| login varchar(64)   |
| passwd varchar(40)  |
| name varchar(64)    |
| surname varchar(64) |
| email varchar(64)   |
| lastActive datetime |
| active tinyint(1)   |
+---------------------+


Wszystko działa super, ale chciałbym dodać kilka dodatkowych pół np. powtórne potwierdzenie hasła. W tym miejscu nie wiem, czy lepiej jest stworzyć nowy, dodatkowy model dziedziczący z CFormModel, czy dodać nową właściwość i regułę do modelu User (co nie będzie odpowiadać kolumną w tabeli users)?

Ponadto chciałbym, aby w formularzu od razu wskazywało się grupy, do których ma należeć user, a odwołania których przechowywane są w tabeli

+---------------------------+
| users_groups              |
+---------------------------+
| id_user (PK) int(11)      |
| id_group (PK) smallint(6) |
+---------------------------+


Teraz drugie pytanie, czy powinienem regułę sprawdzającą (czy została wybrana minimalnie jedna grupa), przerodzić w modelu User (dodać nową własność i regułę sprawdzającą), czy może w samym kontrolerze?

+---------------------+
| groups              |
+---------------------+
| id (PK) smallint(6) |
| group varchar(64)   |
+---------------------+


Z góry dziękuję za pomoc:)
0

#2 User is offline   gadd33 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 22
  • Joined: 15-April 09
  • Location:Opole / Poland

Posted 09 June 2010 - 09:26 AM

View Postgilek, on 07 June 2010 - 02:10 PM, said:

Wszystko działa super, ale chciałbym dodać kilka dodatkowych pół np. powtórne potwierdzenie hasła. W tym miejscu nie wiem, czy lepiej jest stworzyć nowy, dodatkowy model dziedziczący z CFormModel, czy dodać nową właściwość i regułę do modelu User (co nie będzie odpowiadać kolumną w tabeli users)?

Ja stosuję właściwość w modelu User, wtedy łatwo porównać hasła (walidator "compare").

View Postgilek, on 07 June 2010 - 02:10 PM, said:

Ponadto chciałbym, aby w formularzu od razu wskazywało się grupy, do których ma należeć user, a odwołania których przechowywane są w tabeli

Z tym jest trochę zabawy, poszukaj było o tym sporo na forum, hasło klucz - "MANY_MANY". Są rozszerzenia, które usprawniają zapisywanie przy tej relacji, ja stosuję CAdvancedArBehavior.

View Postgilek, on 07 June 2010 - 02:10 PM, said:

Teraz drugie pytanie, czy powinienem regułę sprawdzającą (czy została wybrana minimalnie jedna grupa), przerodzić w modelu User (dodać nową własność i regułę sprawdzającą), czy może w samym kontrolerze?

Myślę, że walidator dopisany w modelu będzie najlepszym rozwiązaniem, na dniach będę to przerabiał to dam znać...
0

#3 User is offline   Trejder 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,197
  • Joined: 06-October 10
  • Location:Southern Poland

Posted 08 November 2010 - 05:22 AM

View Postgilek, on 07 June 2010 - 02:10 PM, said:

Mam pytanie odnośnie użycia klas CModel, możliwe, że trochę głupie, ale podobno, nie ma takich:P

Ależ oczywiście, że są! :) Na przykład pytanie: czy mogę się wysikać pod wiatr i nie zostać oblanym? :P

View Postgilek, on 07 June 2010 - 02:10 PM, said:

Wszystko działa super, ale chciałbym dodać kilka dodatkowych pół np. powtórne potwierdzenie hasła. W tym miejscu nie wiem, czy lepiej jest stworzyć nowy, dodatkowy model dziedziczący z CFormModel, czy dodać nową właściwość i regułę do modelu User (co nie będzie odpowiadać kolumną w tabeli users)?

Tak, jak Ci odpisał przedmówca - zdecydowanie w modelu, dodając nowe pola (właściwości) i ewentualnie dodatkowo oprogramowując ich logikę w metodach takich, jak afterSave(), beforeSave() dziedziczonych (nadpisywanych) z klasy nadrzędnej, jeśli potrzebujesz robić z tymi wartościami coś więcej niż tylko je walidować (jak w przypadku ponownego wpisania hasła).

View Postgilek, on 07 June 2010 - 02:10 PM, said:

Ponadto chciałbym, aby w formularzu od razu wskazywało się grupy, do których ma należeć user, a odwołania których przechowywane są w tabeli

Ponownie, jak pisał przedmówca, chodzi o reakcje MANY_MANY, z tym że ja polecam najpierw przeczytanie choćby pobieżnie dokumentacji do Yii - podręcznika do napisania własnego bloga oraz podręcznika głównego. Tam te zagadnienia są w sposób bardzo dobry wytłumaczone podczas, gdy na forum może być długie szukanie odpowiedzi. Przy czym, jeśli Twój angielski jest dobry to polecam wersję angielską Definitive Guide, bo tłumaczenie polskie jest lekko mówiąc niedoskonałe (sporo wnerwiających literówek, jak poważnych błędów).

A tak w ogóle, to gorąco, bardzo gorąco polecam przeszukanie Cookbook i rozszerzeń zanim zaczniesz pisać własne rozwiązania. Po co wywarzać na nowo otwarte drzwi lub ponownie wymyślać koło? Na podstawie tabeli wnioskuję, że piszesz system do zarządzania użytkownikami, których do tej pory dla yii powstało tylko piętnaście! :) W tym rozszerzenie rights, które wydaje się być naprawdę ciekawe.

View Postgilek, on 07 June 2010 - 02:10 PM, said:

Teraz drugie pytanie, czy powinienem regułę sprawdzającą (czy została wybrana minimalnie jedna grupa), przerodzić w modelu User (dodać nową własność i regułę sprawdzającą), czy może w samym kontrolerze?

Zdecydowanie walidator w modelu, do tego przecież one powstały...
Proud Cookbook author, though still learning powerful Yii! :] See my generic profile for more information. Cheers!
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users