Uchwycić moment…

menic’s devBlog

Symfony i jego braki…

W koncu mamy layout dla ToNieProblem. Z racji tego odpusciłem sobie narazie prace nad SparkleWorks na rzecz Symfony. Najpier miło mnie zaskoczyło, jak łatwo mozna dodać kontrolke RichEdit do formularzy. Bardzo przyjemna sprawa. Ale to tyle rzeczy pozytywnych. Przejdzmy do tego co znowu mi brakuje. A mianowicie cały ten system slotów i komponentow. Jest To rozbudowane jak cholera. Wiele funkcji jest az nadto, a nie ma tego co mi jest potrzebne. A mianowicie: mam komponent user. Występuje on w 3 różnych stanach. Kiedy użytkownik jest zalogowany, niezalogowany oraz kiedy zalogowany uzytkownik jest expertem. I jak to najłatwiej zrobić? Przyszło mi do głowy, ze w szablonie załaduje komponent z akcją Index. W tejze akcji zrobimy cos takiego:

PHP:
  1. <?php
  2. class usersComponents extends sfComponents
  3. {
  4. public function executeIndex()
  5. {
  6. if( $this->getUser()->isAuthenticated() )
  7. {
  8. if( $this->getUser()->getAttribute('credential_registered') == 'expert' )
  9. {
  10. $this->executeExpert();
  11. }
  12. else
  13. {
  14. $this->executeLoggedUser();
  15. }
  16. }
  17. else
  18. {
  19. $this->executeUnloggedUser();
  20. }
  21. }
  22. private function executeLoggedUser()
  23. {
  24.  
  25. }
  26. private function executeUnloggedUser()
  27. {
  28.  
  29. }
  30. private function executeExpert()
  31. {
  32. }
  33. }
  34. ?>

To działa. Ale co z widokiem? Nie da sie teraz załadować widoków dla poszczególnych akcji komponentu. Coś takiego jak setTemplate() dla komponentów nie istnieje :(
Tak więc kolejny argument za tym, aby napisać SparkleWorks :D

4 Comments so far

  1. php blog styczeń 18th, 2007 9:49 am

    Wg mnie wystarczy przekazać do szablony jaki jest stan użytkownika. Osobiście nie robię dla każdego rodzaju użytkownika osobnego szablonu bo wydaje mi się to nie potrzebne. Warunkami if należy to rozwiązać IMHO ;) Pozdrawiam.

  2. menic styczeń 18th, 2007 10:16 am

    No da sie to zrobić, bez problemu, własnie ifami w szablonie oraz w akcji. Ale ten sposób jaki napisałem w notce IMO byłby najlepszy. Lubie poprostu jak wszystko jest od siebie odseparowane :)

  3. SongoQ marzec 3rd, 2007 2:58 pm

    Jesli mowisz ze wolisz mnie wszystko osobno to po co robisz to razem. 3 stany w 1 componencie? Zobacz sobie na http://www.symfony-project.com/askeet/20

  4. menic marzec 3rd, 2007 6:31 pm

    @SongoQ: w sumie racja. Nie wpadłem na to kiedy to pisalem :)

Leave a reply

Mexico