Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF] Pominięcie domyślnej ścieżki widoku
Daimos
post
Post #1





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


Witam,
głowię się nad drobnym problemem, chodzi o domyślną ścieżkę dla widoków w ZF1.
Ustawiam sobie ją za pomocą setBasePath i co widzę w przypadku aplikacji z modułami? ZF mimo wszystko najpierw zagląda do folderu z modułem i to mi się nie podoba, kolejność:
1. /modules/[MÓJ MODUŁ]/views/scripts
2. [Mój basePath]
2. [Mój basePath 2]
Jak wyeliminować punkt 1? Nie chcę, aby ZF tam szukał szablonu. Może ktoś z Was się już w to zagłębiał?
--- edit:
Jeśli to możliwe, to najlepiej by było po prostu zmienić kolejność wczytywania widoku na:
1. [Mój basePath]
2. [Mój basePath 2]
3. /modules/[MÓJ MODUŁ]/views/scripts
Ale problem w tym, że podstawowa ścieżka /modules/[MÓJ MODUŁ]/views/scripts jest chyba generowana w locie przez helper viewRenderer. Mogę nadpisać chyba to w pluginie, ale wtedy, jeśli w jakiejś akcji mam zmieniony widok za pomocą tego helpera - to nie zadziała.

Ten post edytował Daimos 5.11.2014, 12:52:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Daimos
post
Post #2





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


Viking, czytałeś całego mojego posta? (IMG:style_emoticons/default/smile.gif) Problem w tym, że pomimo setBasePath, zend w pierwszej kolejności szuka widoku w folderze:
modules/MODUL/views/scripts/KONTROLER/AKCJA.phtml

Robi to prawdopodobnie, jak pisałem wyżej: viewRenderer (helper kontrolera). Robi to świetnie, ale chcę się wgryźć przed to, żeby najpierw sprawdził mi, czy widok istnieje w folderze z szablonem.

- edit
Wiem już więcej. ViewRenderer ma metodę: setViewBasePathSpec();
W której mogę ustawić ścieżkę dla domyślnych plików. Ale tylko jedną, koniec. Chyba jedynym wyjściem będzie napisanie swojego helpera, jako rozszerzenie viewRenderer
- edit 2
Na chwilę obecną napisałem plugin, który rozwiązuje problem, ale będę szukał jeszcze innego rozwiązania:
  1. class MyPrefix_View_Plugin extends Zend_Controller_Plugin_Abstract
  2. {
  3. public function preDispatch(Zend_Controller_Request_Abstract $request)
  4. {
  5. $template = 'templateName';
  6. $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
  7. if(file_exists(APPLICATION_PATH.'/views/'.$template.'/scripts/modules/'.
  8. $request->getModuleName().'/'.$viewRenderer->getViewScript()))
  9. {
  10. $viewRenderer->setViewBasePathSpec(APPLICATION_PATH.'/views/'.$template.'/');
  11. $viewRenderer->setViewScriptPathSpec('modules/:module/:controller/:action.:suffix');
  12. }
  13. else
  14. {
  15. $viewRenderer->setViewBasePathSpec(':moduleDir/views');
  16. $viewRenderer->setViewScriptPathSpec(':controller/:action.:suffix');
  17. }
  18. }
  19. }

Załatwia to problem, sam sprawdzam, czy w szablonie istnieje plik do podmiany. Mimo to, nie podoba mi się za bardzo takie rozwiązanie, pewnie da się lepiej (IMG:style_emoticons/default/smile.gif)

Ten post edytował Daimos 5.11.2014, 17:19:19
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: 3.10.2025 - 14:21