Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework][ZF2][ZendFramework2] layouty w modułach
umatik
post
Post #1





Grupa: Zarejestrowani
Postów: 209
Pomógł: 0
Dołączył: 17.05.2002
Skąd: lodz

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


Mam 3 moduły: Application, Testy, Uzytkownicy
W każdym z nich w widokach dostępne są layouty a w pliku module.config.php:

  1. 'view_manager' => array(
  2. 'template_path_stack' => array(
  3. 'NAZWA_MODUŁU' => __DIR__ . '/../view',
  4. ),
  5. 'not_found_template' => 'error/404',
  6. 'exception_template' => 'error/index',
  7. 'template_map' => array(
  8. 'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
  9. 'error/404' => __DIR__ . '/../view/error/404.phtml',
  10. ),
  11. 'strategies' => array(
  12. 'ViewJsonStrategy',
  13. ),
  14. ),


Powinno być tak że:

localhost/public/application - pokazuje layout dla aplikacji
localhost/public/testy - pokazuje layout dla testów
localhost/public/uzytkownicy - pokazuje layout dla użytkowników

Niestety tak nie jest, zawsze pokazuje się layout dla modułu Testy.
Ponadto
localhost/public/application - nie ładuje widoku
localhost/public/uzytkownicy pomimo poprawnego routingu pojawia się monit:

An error occurred
An error occurred during execution; please try again later.



Go to the top of the page
+Quote Post
chemiqs
post
Post #2





Grupa: Zarejestrowani
Postów: 110
Pomógł: 2
Dołączył: 2.06.2012

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


Nie jestem expertem w Zend ale o ile mi wiadomo bedzie sie ladowal layout który ostatni jest ładowany do modul manager.
A ty rozumiem ze bys chcial dla kazdego inny??

PS. a moze juz rozwiazales swoj problem??

A nie. Pomyłka.

do kazdego modelu musisz zdefiniowac layout.

do application musisz dac:
  1. 'view_manager'=> [
  2. 'template_map' => [
  3. 'layout/layoutApplication' => __DIR__ . '/../view/layout/layoutApplication.phtml',
  4. ],
  5. 'template_path_stack'=>[
  6. 'album'=>__DIR__.'/../view',
  7. ]
  8.  
  9. ]



do user musisz dac:
  1. 'view_manager'=> [
  2. 'template_map' => [
  3. 'layout/layoutUser' => __DIR__ . '/../view/layout/layoutUser.phtml',
  4. ],
  5. 'template_path_stack'=>[
  6. 'album'=>__DIR__.'/../view',
  7. ]
  8.  
  9. ]





A w controllerach przy odpowiednich akcjach dac:

Application
---------------
  1. public function indexAction()
  2. {
  3. $this->layout("layout/layoutApplication");
  4. ......





User
-------
  1. public function indexAction()
  2. {
  3. $this->layout("layout/layoutUser");
  4. ......




Chyba cos takiego.

Ten post edytował chemiqs 20.08.2016, 16:11:15
Go to the top of the page
+Quote Post
viking
post
Post #3





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


https://github.com/EvanDotPro/EdpModuleLayo...aster/README.md
A poza tym ladujesz jsonstrategy.
Go to the top of the page
+Quote Post
em1X
post
Post #4





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Ustawienia layout'u to kwestia czysto widokowa. Jeżeli w danym widoku chcesz wykorzystać layout inny niż domyślny (layout/layout), powinieneś na początku widoku napisać:

  1. <?php
  2. $this->layout('layout/inny');


Oczywiście wpis layout/inny powinien być skonfigurowany w template maps menedżera widoku.
Go to the top of the page
+Quote Post
sf
post
Post #5





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


Podsumowując temat, layout można ustawić w kontrolerze, szablonie, module np. podpiąć się pod event. Wszystko opisane i uzupełnione o przykłady znajduje się w dokumentacji :

https://zendframework.github.io/zend-view/q...ng-with-layouts
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: 22.08.2025 - 23:33