Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] - automatyczne szukanie szablonu
Crazy_Ivan
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.07.2007

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


Na początku chciałbym zaznaczyć że dopiero zaczynam przygodę z ZF dlatego prosił bym o wyrozumiałość. Problem mój jest prawdopodobnie trywialny lecz odpowiedz w dokumentacji jakoś nie rzuciła mi się w oczy. Sytuacja wygląda następująco:
Posiadam controller AuthController w którym to miedzy innymi posiadam metodę loginAction(). Metoda ta na początku sprawdza czy czy zostały wysłane dane _POST. Jeżeli nie to ustawiam $this->_request->setControllerName('error'); jeżeli tak to sprawdzam oczywiście czy są poprawne dane wprowadzone. Jeżeli tak to redirect, jeżeli nie to wysyłam zmienna z tekstem błędu i renderuje podstronę w zależności z której zostały te dane wysłane. Nadmienię jeszcze że na każdej podstronie mam mały panel do logowania. Problem mój polega na tym że dostaje wyjątek o braku pliki szablonu login.phtml. Oczywiście rozumiem dlaczego tak jest, lecz w moim przykładzie tego szablonu nie potrzebuję,a wstawiać pusty plik w projekt tylko dlatego żeby był uważam za kiepski pomysł. Zwracam się więc z prośbą do szanownych Pań/Panów o pomoc.
Go to the top of the page
+Quote Post
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




A nie byłoby prościej zrobić helpera z formularza do logowania? Wówczas nie potrzebowałbyś żadnego pliku login.phtml (zakładam, że ten plik zawiera formularz logowania). Helpera mógłbyś wczytywać w dowolnym momencie w plikach widoku lub w layoucie.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
Crazy_Ivan
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.07.2007

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


w pliku login.phtml nie posiadam nic , formularz mam na stałe wpisany w layout główny. Chodzi o to że jeśli posiadam klasę AuthController i w niej metodę loginAction() to system po wykonaniu jakiegoś tam kodu szuka pliku login.phtml z zamiarem renderowania go. Ja natomiast chce renderować inny szablon niż login.phtml . W jaki sposób zmusić frama by zaprzestał szukania login.phtml i wyrenderował zadany mu w metodzie szablon.

Ten post edytował Crazy_Ivan 11.07.2008, 13:26:28
Go to the top of the page
+Quote Post
batman
post
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Do wyłączenia renderowania pliku widoku służy
  1. <?php
  2. $this->_helper->viewRenderer->setNoRender(true);
  3. ?>

Do renderowania innego pliku widoku możesz użyć
  1. <?php
  2. $this->_helper->viewRenderer('foo');
  3. ?>

Szczerze przyznam, że nie używałem tej drugiej funkcji, więc nie wiem dokładnie jak się zachowa. Info o tym znajdziesz w dokumentacji.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
mike
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Wyłaczyć renderowanie można również tak:
  1. <?php
  2.  
  3. Zend_Controller_Front::getInstance()->setParam('noViewRenderer', true);
  4.  
  5. ?>
Go to the top of the page
+Quote Post
Crazy_Ivan
post
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.07.2007

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


dokładnie o to chodziło smile.gif. Wielkie dzięki za szybką odpowiedz.
  1. <?php
  2.  
  3. class AuthController extends My_Controller_Action
  4. {
  5. function loginAction()
  6. {
  7. if($this->_request->isPost())
  8. {
  9. //sprawdz dane 
  10. }
  11. else
  12. {
  13. $this->_helper->layout->disableLayout();
  14. $this->_helper->viewRenderer('/error/error',null,true);
  15. }
  16. }
  17.  
  18. function logoutAction()
  19. {
  20. ZendAuth::getInstance()->clearIdentity();
  21. $this->_redirect('/');
  22. }
  23.  
  24. }
  25.  
  26. ?>
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: 21.08.2025 - 08:18