Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [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

Posty w temacie


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: 5.10.2025 - 11:06