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
 
Start new topic
Odpowiedzi
Wasper
post
Post #2





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

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: 13.10.2025 - 20:24