![]() |
![]() ![]() |
![]() |
![]()
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 -------------------- scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli odpalany jest kontroler z modułu to dlaczego widoku nie miałby szukać w module? Na tym polega modularyzacja.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Skoro już interesuje Cie powód
![]() Mam aplikację, gdzie jest kilka modułów i chcę zrobić szablony. Tworzę folder z domyślnym systemowym szablonem, gdzie są wszystkie widoki, podzielone m.in. na foldery moduł/kontroler/akcja i szablony dzieci, które posiadają nadpisany domyślny szablon, lub nie. Dlatego też, nie pasuje mi zupełnie szukanie widoku w katalogu modules. Struktura mojej aplikacji to mniej więcej: Kod application modules modul1 forms/models/controllers modul2 forms/models/controllers modul3 forms/models/controllers views system #katalog z szablonem systemowym modul1 kontroler akcja dowolnyszablon modul1 kontroler akcja Wiem już, że problemem jest helper viewRenderer, ale jak to obejść, na razie nie wiem. Spróbuję jeszcze dodać jakiś prefix path dla niego, może coś z tego wyjdzie. Innym rozwiązaniem, będzie trzymanie szablonu systemowego w każdym module, czyli tak, jak jest to domyślnie, ale nie mogę aktualnie tego zrobić, bo jest to pierwsze miejsce, w którym szablon jest poszukiwany, więc w razie czego, nie mogę go nadpisać - zamieszczając nowy szablon, zostanie on pominięty, bo najpierw wczytają się standardowe widoki. Ten post edytował Daimos 4.11.2014, 22:45:05 -------------------- scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dla każdej akcji można indywidualnie zmieniać szablon, można zmienić też domyślne zachowanie nadpisując standardowe klasy. Zobacz dokumentację http://framework.zend.com/manual/1.12/en/z...ontrollers.html
Natomiast i tak nie wiem co podany przykład ma dać bo wyrzucasz tylko wszystko poza katalog domyślny. Według mnie mało intuicyjne. Masz też layouty czyli podstawowy wygląd identyczny dla podstron. Kod $view = new Zend_View();
$view->setScriptPath('/path/to/app/views'); Ten post edytował viking 5.11.2014, 11:30:09 -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Ok więc inaczej.
Docelowo, chciałbym ustalić folder podstawowy dla wszystkich widoków. Będzie to folder szablonu, np: /szablonNaNowyRok/ Całość ma polegać na tym, że jeśli w katalogu szablonu nie ma danego pliku phtml, to ma go pobierać ze standardowych, systemowych. I jak pisałem wyżej, nie mogę tego zrobić, ponieważ ZF najpierw szuka w standardowej ścieżce, mimo, że ustawiam setScriptPath i co tam sobie nie wymyślę. Także viking, pisałem już o setScriptPath, czytałem manual, ale problem w tym, że co bym nie ustawił, ZF zawsze i tak najpierw sprawdza standardową ścieżkę, a chcę, aby sprawdzał ją w ostatniej kolejności. Aktualnie rozwiązałem to w ten sposób, jak opisałem w pierwszym poście. Dodałem 2x scriptPath i tam mogę trzymać systemowe widoki, bo jestem w stanie kontrować kolejność ich wczytywania. Ten post edytował Daimos 5.11.2014, 12:48:23 -------------------- scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nawet jeżeli sprawdzisz źródło:
Widać wyraźnie że czyści. addScriptPath dodaje tak jak mówisz. Jest jeszcze setBasePath. -------------------- |
|
|
![]()
Post
#7
|
|
![]() 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?
![]() 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:
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 ![]() Ten post edytował Daimos 5.11.2014, 17:19:19 -------------------- scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.07.2025 - 09:54 |