![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam następujący problem: podzieliłem aplikację na moduły i wprowadziłem layout, w którym załączam skrypty js i arkusze css w następujący sposób (fragment pliku layout.phtml):
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> <head>
</head><body> Jednak ku mojemu zaskoczeniu te same skrypty i arkusze są dołączane kilka razy, tak, że wychodzi na to, że zamiast ok. 13-stu pozycji mam... 66 (!) i dość poważny problem. Jak zakomentuję linie, w których dodaję te skrypty i arkusze, to w ogóle ani jednego nie dołączy. I teraz pytanie: Jak/co zrobić, aby te skrypty dołączały się tylko raz i nie powtarzały w źródle strony? To wrzucę jeszcze fragment Bootstrap.php:
Ten post edytował darko 6.02.2010, 16:23:44 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Podobny problem miałem, gdy korzystałem z _forward w kontrolerze. Przy czym u mnie duplikowała się zawartość znacznika title. Niestety nie znalazłem eleganckiego rozwiązania tego problemu. W moim przypadku pomogło wyczyszczenie title i wstawienie wszystkiego od nowa.
Pokaż cały kod pliku z layoutem, cały główny bootstrap i bootstrapy modułów (jeśli coś w nich jest), application.ini oraz metodę init i akcję kontrolera, w którym treść jest zduplikowana. -------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
layout.phtml:
Bootstrap.php (główny, te w modułach są puste, więc nie ma sensu ich pokazywać)
application.ini [production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 ;includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.modules = "" resources.db.adapter = pdo_mysql resources.db.params.host = localhost resources.db.params.username = HAHA resources.db.params.password = HEHE resources.db.params.dbname = HIHI resources.layout.layoutpath = APPLICATION_PATH "/layouts" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 IndexController.php
-------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Sprawa wydaje się prosta. Opiszę w punktach co powinno pomóc. Potem napiszę kilka uwag, a na koniec wyjaśnię potencjalną przyczynę problemów.
1. Usuń z pliku layout.phtml wszystkie headLink i headScript i zamiast tego wstaw 2. W pliku bootstrap dodaj metodę np _initHtml, a w niej:
Oczywiście pamiętaj o ustawieniu popranych ścieżek. Co do uwag, to jest taki zasób jak View i możesz nie musisz wyciągać obiektu widoku z layoutu. Metodę _initViewHelpers podzieliłbym na dwie. Elementy odpowiedzialne za treść html (tytuł, meta, itp) przeniósł do jednej metody (np _initHtml), a nawigację do np _initNavigation. Podobnie z resztą można zrobić w puginami. Nie pasują do _initAutoload. A teraz dlaczego tak się działo. Każdy wiersz: wywołuje helper widoku headLink. Do każdego wywołania dokładasz kolejny plik i go wywołujesz. Po którymś z kolei wywołaniu tego helpera i dołożenia kolejnego pliku, masz pokaźne stadko plików do dołączenia. Tak to przynajmniej wygląda na sucho. -------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
ok działa, dzięki ~batman
Ja tylko dodam, co zrobiłem: Bootstrap.php
layout.phtml:
i... ![]() // edit nie dziwota, Front_Controller jeszcze nie istnieje, w końcu jesteśmy dopiero w Bootstrap Ten post edytował darko 7.02.2010, 15:27:18 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 17:52 |