Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF] Czy jest gdzieś dostępny przykład dot ZF, o ZF raz jeszcze
juzwa
post
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 10.07.2006

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


zaczęły się u mnie problemy z ZF i to dość poważne

a, że ja mimo prób nie potrafię znaleźć jakiś konkretnych przykładów - np z logowaniem, obsługą sesji to mam pytanie - prośbę o jakieś linki czy coś w tym rodzaju

ja wiem, że jest manual, ale tam te przykłady dość ubogie są - np z tego co rozumiem to jak w kontrolerze wpisuje się noRouteAction to ZF ma z tego skorzystać, gdy nie znajdzie kontrolera tymczasem u mnie jest to błąd - wziąłem to w try catch ale - nie wiem jak obsłużyć przekierowanie

kolejna sprawa
gdy jest http://localhost/prj/index/ - to nie obsługuje mi stylów itp itd
gdy jest http://localhost/prj/index - to wszystko jest OK

też nie wiem o co chodzi bo niby z kontrolera w jednym i w drugim przypadku ciągnie z tego samego kontrolera i z tej samej akcji i nie wiem czemu ścieżki w jednym widoku pasują w innym nie - w ogóle nie wiem jak to obsłużyć takie coś i o co chodzi

i jeszcze parę mniejszych lub większych drobiazgów by się znalazła - jak na razie praca z ZF to męczarnia dla mnie jest - sporo czasu straconego
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
nrm
post
Post #2





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


zajrzyj na blog http://wojciech.naruniec.info/pl/ tam chyba kiedyś było jakieś małe how-to/pierwsze kroki z ZF.


--------------------
Go to the top of the page
+Quote Post
cyphelf
post
Post #3





Grupa: Zarejestrowani
Postów: 68
Pomógł: 1
Dołączył: 27.03.2006

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


Cytat(juzwa @ 6.02.2007, 10:36:21 ) *
zaczęły się u mnie problemy z ZF i to dość poważne

a, że ja mimo prób nie potrafię znaleźć jakiś konkretnych przykładów - np z logowaniem, obsługą sesji to mam pytanie - prośbę o jakieś linki czy coś w tym rodzaju


Zobacz przykładowy sposób użycia autentykacji i uprawnień, może to Ci pomoże:
http://www.nabble.com/Zend_Acl---Zend_Auth...5728s16154.html

Cytat(juzwa @ 6.02.2007, 10:36:21 ) *
ja wiem, że jest manual, ale tam te przykłady dość ubogie są - np z tego co rozumiem to jak w kontrolerze wpisuje się noRouteAction to ZF ma z tego skorzystać, gdy nie znajdzie kontrolera tymczasem u mnie jest to błąd - wziąłem to w try catch ale - nie wiem jak obsłużyć przekierowanie


W wersji SVN i za kilka dni w wersji 0.8 powinno już być ok, spójrz tutaj:
http://framework.zend.com/issues/browse/ZF-775

Cytat(juzwa @ 6.02.2007, 10:36:21 ) *
kolejna sprawa
gdy jest http://localhost/prj/index/ - to nie obsługuje mi stylów itp itd
gdy jest http://localhost/prj/index - to wszystko jest OK


Spróbuj zmienić odnośnik do arkusza stylów na ścieżkę bezwzlędną, czyli np. zamiast "style.css" powinieneś mieć "/prj/style.css" (zwróć uwagę na slash na początku). Wtedy powinno być ok.


--------------------
lorem ipsum : polska społeczność zend framework
Go to the top of the page
+Quote Post
juzwa
post
Post #4





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 10.07.2006

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


dzięki za odpowiedź - do części doszedłem sam, częściowo pomogły mi przykłady które podałeś

np zamiast noRouteAction jest __calll (jakby ktoś szukał)

ale zostaje problem typu
if($sesja->zalogowany)
$frontController->dispatch();//idź dokąd chcecz
else
//MA BYĆ STRONA Z LOGOWANIEM

próbowałem szukałem siedziałem nad tym - porażka -

w przykładzie który podałeś jest fragment

->setControllerDirectory(array('default' => realpath('../application/controllers/default'),
admin' => realpath('../application/controllers/admin')))

czy w związku z tym mam zorganizować dwie ścieżki ?
bo coś próbowałem w tym kierunku ale też nie wyszło

chodzi mi o logikę - jak to się robi

normalnie jest tak
1 - sprawdź czy jest zalogowany
2 - jeśli nie skieruj go na stronę z logowaniem

realizacja tego jest np taka
if (!$_SESSION['log'])
header('location:index.php?akcja=logowanie');

zwyczajnie normalnie prosto i da się to wymyślić samemu

a przy zendzie - już nie wiem co robić - może logika obsługi tego jest inna - a ja się czepiłem "starej" formy i dlatego mam kłopoty - ale z drugiej strony - tak ja to sobie wyobrażam - skoro w "tradycyjnej" metodzie można było to zdarzenie obsłużyć dwiema linijkami kodu to tutaj chyba nie trzeba pisać osobnego podprogramu (czy jak to tam nazwać)
Go to the top of the page
+Quote Post
Sabistik
post
Post #5


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


Wszystko zależy gdzie Ty to chcesz sprawdzać. Poczytaj o pluginach.

  1. <?php
  2. class plugins_login extends Zend_Controller_Plugin_Abstract
  3. {
  4.  public function preDispatch($request)
  5.  {
  6. if(!$sesja->zalogowany)
  7. {
  8. // header czy jakis redirect do akcji z logowaniem.
  9. }
  10.  }
  11. }
  12. ?>
Go to the top of the page
+Quote Post
juzwa
post
Post #6





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 10.07.2006

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


dzięki za odpowiedź - pomogła mi bardzo

ale i tak nie do końca

if(!$sesja->zalogowany)
{
// header czy jakis redirect do akcji z logowaniem.
exit;
}

nie wiem co wstawić w miejsce komentarza

1 - header odradzam bo to jest tak index.php się ładuje sprawdza plugin -> w pluginie ma, że ma przechodzić gdzieś tam -> przechodzi (oczywiście przez index.php) -> sprawdza, że nie jest zalogowany -> ma na to instrukcję że ma przechodzić gdzieś tam -> przechodzi -> w efekcie zapętla się i jest błąd

2 - redirect jest związany z Zend_Controller_Action więc raczej odpada (dotyczy to także metody _forward)
no chyba, że da się jej użyć na sposób o którym nie mam pojęcia na razie

3 - co zrobiłem - (oprócz 1 i 2)
zajrzałem do klasy obsługującej pluginy i znalazłem metodę

public function setRequest(Zend_Controller_Request_Abstract $request)
{
$this->_request = $request;
return $this;
}
wg mnie powinna utworzyć żądanie aby przekazać akcje do określonej metody określonego kontrolera
(podobna do tej jest setRedirect)

próbowałem
$this->_request='/';
$this->_redirect='/';
lub to samo ale z 'index'

no i porażka - nie wiem może trzeba utworzyć klasę dziedzicząca po Zend_Controller_Request_Abstract i coś w pluginie jakąś jej metodę wywołać - no już nie mam pomysłu jak to zrobić

ogólnie rzecz biorąc klasa ta nie jest skomplikowana - to jest z 10 metod - z jedną dwoma linijkami kodu, ale nie znalazłem tam sposobu na przypisanie jakieś do Zend_Controller_Front tego kontrolera którego chcę aby był wyświetlony


tak na zakończenie - chciałem coś porobić z ZF bo gdzieś przeczytałem, że jest prosty do nauczenia się i w obsłudze - ale na końcu trzeciego dnia gdzie nie mogę znaleźć rozwiązania czegoś co w tradycyjnym rozwiązaniu było banalne i robiło sie najwyżej w minutę to mnie trafia - przecież to nie jest nic wymyślnego, wg mnie to jest jedna z podstawowych funkcji i zero przykładów jak to zrobić, ani nawet opisu jak się to robi, jak się to robić powinno - albo ja jestem za głupi na tego ZF i nie potrafię tak prostej funkcjonalności obsłużyć
Go to the top of the page
+Quote Post
Sabistik
post
Post #7


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


Jak dla mnie ZF to najprostszy fw jaki widziałem (:

Nie pamiętam jak to dokładnie szło ale chyba jakoś tak:
  1. <?php
  2. public function preDispatch($request)
  3. {
  4. $dispatcher = Zend_Controller_Front::getInstance()->getDispatcher();
  5. if (!$session->zalogowany)
  6. {
  7. $request->setControllerName('login')
  8. ->setActionName($dispatcher->getDefaultAction())
  9. ->setDispatched(false);
  10. }
  11. }
  12. ?>


W kontrolerze login w defaultowej akcji robisz formularz logowania.
Go to the top of the page
+Quote Post
juzwa
post
Post #8





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 10.07.2006

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


  1. <?php
  2. public function preDispatch($request)
  3. {
  4. $dispatcher = Zend_Controller_Front::getInstance()->getDispatcher();
  5. if (!$session->zalogowany)
  6. {
  7. $request->setControllerName('login')
  8. ->setActionName($dispatcher->getDefaultAction())
  9. ->setDispatched();//BEZ FALSE
  10. }
  11. }
  12. ?>


jeszcze jedna mała popraweczka do powyższego rozwiązania

teraz jest tak, że przed każdym wywołaniem kontrolera jest sprawdzane czy jest się zalogowanym - jeśli nie to kieruje do kontrolera login do akcji domyślnej (czy jak tam to sobie kto ustawi) - ale gdy ktoś nie jest zalogowany i się loguje i nawet jak poda poprawne dane to w procesie weryfikacji danych jest on dalej niezalogowany - no i jest problem ciągłego powracania do strony logowania bez względu na wszystko - bo cały czas jest się niezalogowanym i nie ma szansy aby stan ten zmienić - bo kierując kogoś do procesu weryfikacji danych jest on niezalogowany czyli trzeba go skierować do strony logowania

dlatego też przerobiłem to w następujący sposób:
1 - wykorzystałem zmienna która przechowuje nazwę ścieżki aplikacji
2 - sprawdzanie warunku czy przypadkiem akcja nie jest skierowana do kontrolera i metody weryfikującej dane - bo jeśli tak to trzeba dać szanse na zalogowanie, a jeśli nie to skierować do strony z logowaniem


  1. <?php
  2. public function preDispatch($request)
  3. {
  4. $dispatcher = Zend_Controller_Front::getInstance()->getDispatcher();
  5. $appPath=Zend::registry('appPath');//1
  6. if (!$session->zalogowany)
  7. {
  8. if($request->getRequestUri()!=$appPath.'index/login')//2
  9.  {
  10.  $request->setControllerName('login')
  11.  ->setActionName($dispatcher->getDefaultAction())
  12. ->setDispatched();
  13.  }
  14. }
  15. }
  16. ?>


nie wiem czy jest to rozwiązanie optymalne, ładne, poprawne pod względem formalnym - ale najważniejsze, że działa - ale jakby ktoś miał coś innego do zaproponowania to chętnie bym zobaczył to inne rozwiązanie

Ten post edytował juzwa 11.02.2007, 11:02:11
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: 20.08.2025 - 09:16