Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF][ZF2] Sterta pytań początkującego
Wasper
post
Post #1





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 18.09.2011

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


Czesc.
Postanowilem zalozyc ten temat, poniewaz na poczatku mojej przygody z ZF2 rodzi sie wiecej pytan niz odpowiedzi (IMG:style_emoticons/default/smile.gif)
Dlatego, zeby nie mnozyc tematow, bede otwieral poszczegolne 'pytania' tutaj i zamykal po uzyskaniu odpowiedzi (przez kogos lub przez siebie (IMG:style_emoticons/default/tongue.gif) ).
Jezeli moge to prosilbym o wylacznosc w zadawaniu pytan, bo nie chce, zeby zrobil sie tutaj smietnik.
A wiec


*** PYTANIE 1 ***

Cel: globalne elementy widoku

Wezmy taki przyklad. Mamy strone na ktorej jest u gory jakas belka z menu. W zaleznosci od modulu moze sie ona roznic "aktywnym" elementem.

Mamy 2 moduly: Application i Test, 2 kontrolery i 2 systemy plikow.
I teraz: w module Application tworze 2 pliki widoku:

upMenu.phtml

  1. <div class="navbar navbar-inverse navbar-fixed-top">
  2. <div class="navbar-inner">
  3. <div class="container">
  4. <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
  5. </a>
  6. <a class="brand" href="<?php echo $this->url('home') ?>"><?php echo $this->escapeHtml('EasyApp'); ?></a>
  7. <div class="nav-collapse collapse">
  8. <ul class="nav">
  9. <li <?php echo ($active == 1 ? 'class="active"' : ''); ?>><a href="<?php echo $this->url('home') ?>"><?php echo $this->translate('Strona główna') ?></a></li>
  10. <li <?php echo ($active == 2 ? 'class="active"' : ''); ?>><a href="<?php echo $this->url('test') ?>"><?php echo $this->translate('Test') ?></a></li>
  11. </ul>
  12. </div>
  13. </div>
  14. </div>
  15. </div>


i powiedzmy footer (to juz malo wazne).
Jak widac w upMenu przykladowo w zaleznosci od zmiennej $active aktywujemy ktorys z elementow menu.

Teraz w Application w konstruktorze kontrolera IndexController definiujemy zmienna view, ktorej przypisujemy ViewModel(). Wyglada to tak:

  1. class IndexController extends AbstractActionController
  2. {
  3. protected $view;
  4.  
  5. public function __construct() {
  6. $this->view = new ViewModel();
  7.  
  8. $menuBar = new ViewModel();
  9. $menuBar->setTemplate('application/index/upMenu.phtml');
  10. $menuBar->setVariables(array('active' => 1));
  11.  
  12. $this->view->addChild($menuBar, 'menu');
  13. }
  14. public function indexAction()
  15. {
  16. return $this->view;
  17. }
  18. }


I wszystko ladnie gra po wejsciu na strone 'glowna'.
Ale teraz czas na zmiane modulu i tu jest problem, jak sie dostac z modulu Test do upMenu.phtml

  1. Requested scripts may not include parent directory traversal ("../", "..\" notation)


... juz wiem, ze tak sie nie da (IMG:style_emoticons/default/smile.gif)

Myslalem, zeby umiescic ta belke w layoucie, ale jak przekazac (czy w ogole sie da) zmienna do layoutu, bo jedyne co tam jest to $this->content;
Czy da sie zrobic "globalne" elementy widoku? Jak je zdefiniowac i gdzie?


**** ODPOWIEDZ NA PYTANIE ****

Sam rozkminilem (IMG:style_emoticons/default/smile.gif)
Dla potomnosci (IMG:style_emoticons/default/smile.gif)

stworzylem sobie w "/" Folder View a w nim folder Templates gdzie umiescilem UpMenu.phtml

nastepnie w pliku konfiguracyjnym obydwu modulow Application i Test dodalem

  1. 'template_map' => array(
  2. 'application/upMenu' => 'View/templates/upMenu.phtml', //linia dodana
  3. ),


po czym dokonalem zmiany w konstruktorze na juz zdefiniowany element widoku

  1. $menuBar->setTemplate('application/upMenu');


Ot cala filozofia (IMG:style_emoticons/default/smile.gif)
Koniec pytania, uwagi przyjme (IMG:style_emoticons/default/smile.gif)

*****************************

****** PYTANIE NR 2 **********

Cel: logowanie, autoryzacja.
Staram sie rozkminic jak to ugryzc, ale nie moge nic wymyslec realnego poki co.
Ok, w konstruktorze mozna sprawdzac autoryzacje (czy sesja nie wygasla, czy sesyjne userid ma odniesienie w bazie), jezeli nie to mozna albo zrobic przekierowanie, albo po prostu zmienic widok (IMG:style_emoticons/default/smile.gif)
Ale jak i gdzie rozpisac sama autoryzacje.
Chodzi mi o model z autoryzacja, bo przydaloby sie, zeby byl tak samo gobalny jak widoki z wczesniejszego tematu... tylko gdzie taki widok umiejscic? Czy zrobic osobny modul, ktory nazwac np Authorisation i tam wsadzic i widok 'nologged' i model, w przypadku niespelnienia warunku autoryzacji przekierowywac wlasnie tam?
a w innych modulach includowac np Authorisation\Model\Authorisation??

Ten post edytował Wasper 12.03.2013, 23:36:11
Go to the top of the page
+Quote Post
piasekps
post
Post #2





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 26.03.2007

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


Czesc

Moza ta strona Tobie jakos pomoze, naprowadzi do celu.
Go to the top of the page
+Quote Post
Wasper
post
Post #3





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 18.09.2011

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


Dzieki, napewno pomoze.
Przydalby mi sie opis ogolego dzialania zenda2, czyli tak ogolnie co gdzie i jak. Bo mieszam sie z tymi plikami konfiguracyjnymi.
Np co do rzeczy ktore chcialbym, zeby startowaly przy kazdym uruchomieniu skryptu.. np sprawdzanie autoryzacji, to ma sie dziac po kazdym przeladowaniu na samym poczatku niezaleznie od modulu... i tu zagwozdka.. gdzie to umiescic, zeby bylo globalne.. i dzialalo globalnie
Go to the top of the page
+Quote Post
amii
post
Post #4





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Niedawno w sumie to dzisiaj (IMG:style_emoticons/default/wink.gif) popełniłem na swoim blogu wpis na temat logowania i kontroli uprawnień w Zend myślę, że to dobra odpowiedź na Twoje drugie pytanie
Go to the top of the page
+Quote Post
Wasper
post
Post #5





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 18.09.2011

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


Ano dzisiaj (IMG:style_emoticons/default/smile.gif) Ok, tylko mnie interesuje dwojka, ale owszem, poczytac nie zaszkodzi.
Tez sie zastanawialem na tym, zeby stworzyc glowny nadrzedny kontroller i zeby cala reszta nie dziedziczyla po Abstrakcyjnym zendowym tylko wlasnie po nim. A w tym kontrolerze np w konstruktorze umiescic autentykacje.. albo i nie. Nie wiem, blakam sie troche jeszcze, za duzo rzeczy do ogarniecia..

edit.
ciekawi mnie jeszcze jedna rzecz.
Gdybym chcial, zeby cos sie "globalnie" wykonywalo w module, to mam od tego Module.php (przykladowo http://lab.empirio.no/how-to-attach-mvc-events-in-zf2.html)
A gdybym chcial cos zrobic globalnie w aplikacji?? niezaleznie od modulu?? to co wtedy?

Ten post edytował Wasper 23.03.2013, 20:07:32
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: 26.09.2025 - 07:27