Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Współny fragment kodu - np: boks kategorii
piotr90
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 17.06.2010

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


Witam,

mam taki mały problem i wierzę, że ktoś zna sensowną odpowiedź na ten temat.
Mam prostą aplikację ( 3 kontrollery : index, products, contenst )

- index ( layout: default / 3 kolumny / w lewej kolumnie box z kategoriami produktów, pozostałe kolumny jakiś bełkot marketingowy )
- products ( layout: default / 3 kolumny / w lewej kolumnie box z kategoriami produktów, środkowa produkty z danej kategorii, prawa bełkot market... (IMG:style_emoticons/default/winksmiley.jpg) )
- contents ( sam bełkot market... )

i teraz.. aby wyświetlić ten boks z kategoriami mogę w kontrolerze index i products pobierać listę kategorii z bazy przekazywać ją do widoku i wyświetlać
ale w ten sposób za każdy razem powielam fragment html wyświetlający kategorie.

w symfony był do takich zadań components i było po problemie... z zendzie szukałem czegoś podobnego i nici ... (IMG:style_emoticons/default/sad.gif)

jak rozwiązać taki wspólny komponent/widget czy jak kto woli żeby tylko w layout lub scripts wstawić kod tak jak w sf: include_components('') i po sprawie ?
Go to the top of the page
+Quote Post
melkorm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Manual - View Action Helper

Ten post edytował melkorm 22.07.2010, 14:25:13
Go to the top of the page
+Quote Post
batman
post
Post #3





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Najlepszym sposobem będzie stworzenie własnego helpera widoku, w którym wyciągasz z modelu dane i przekazujesz je do helpera partial. W skrypcie partial robisz wyświetlanie kategorii.
Go to the top of the page
+Quote Post
piotr90
post
Post #4





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 17.06.2010

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


no oki tworze controller: Category i jedna z jego akcji wyswietla mi boks z kategoriami.. tylko, że ktoś kto zna budowę app może sobie wpisać xxxxxx.pl/category/boxcategory i dostanie kategorie (IMG:style_emoticons/default/smile.gif) niby w niczym strasznym to nie przeszkadza ale czy nie ma innego rozwiązania ?

------
@batman - to rozwiązanie z helperem nie głupie / jakiś przykład masz może ?

Ten post edytował piotr90 22.07.2010, 14:30:58
Go to the top of the page
+Quote Post
melkorm
post
Post #5





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Cytat
no oki tworze controller: Category i jedna z jego akcji wyswietla mi boks z kategoriami.. tylko, że ktoś kto zna budowę app może sobie wpisać xxxxxx.pl/category/boxcategory i dostanie kategorie niby w niczym strasznym to nie przeszkadza ale czy nie ma innego rozwiązania ?


a skąd będzie wiedzieć jak nazywa się ta akcja? zresztą w parametrach możesz przekazać że jest to z helepra widoku i wywalać na stronę główną czy coś gdy nie jest.
Lepsze rozwiązanie? Myślę że ten helper do tego został stworzony więc sądzę że jest to najlepsze rozwiązanie.

Pomysł z helperem widoku też nie jest zły, ale tutaj wrzucasz linijkę i już to masz, a tak trzeba napisać helper i stworzyć partial'a (IMG:style_emoticons/default/smile.gif) - fakt nie wiele roboty ale zawsze.
Go to the top of the page
+Quote Post
batman
post
Post #6





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Niestety nie mam nic pod ręką. Zaprezentuje na przykładzie pseudokodu:
  1. <?php
  2. class App_View_Helper_Categories extends Zend_View_Helper_Abstract
  3. {
  4. public function categories()
  5. {
  6. $model = new Application_Model_Categories();
  7. $categories = $model->getCategories();
  8. return $this->view->partialLoop('categories.phtml', null, $categories);
  9. }
  10. }

Zamiast partialLoop (lub partial) można użyć metody render obiektu view. Wówczas nie będzie klonowany obiekt view, co na pewno będzie wydajniejsze. Z drugiej jednak strony partial daje Ci odrębną ""przestrzeń nazw", w której widoczne są przekazane zmienne.

Cytat(melkorm @ 22.07.2010, 15:38:33 ) *
Pomysł z helperem widoku też nie jest zły, ale tutaj wrzucasz linijkę i już to masz, a tak trzeba napisać helper i stworzyć partial'a (IMG:style_emoticons/default/smile.gif) - fakt nie wiele roboty ale zawsze.

Helper i partial tworzysz raz i masz spokój. Wszystkie późniejsze modyfikacje wprowadzasz w jednym miejscu.
Go to the top of the page
+Quote Post
melkorm
post
Post #7





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Cytat
Helper i partial tworzysz raz i masz spokój. Wszystkie późniejsze modyfikacje wprowadzasz w jednym miejscu.


A w moim zastosowaniu nie?
Go to the top of the page
+Quote Post
batman
post
Post #8





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat(melkorm @ 22.07.2010, 15:55:15 ) *
A w moim zastosowaniu nie?

Wybacz, źle przeczytałem. Myślałem, że chodzi Ci o action helper, a nie helper widoku action (IMG:style_emoticons/default/winksmiley.jpg)
To rozwiązanie nie jest najlepsze, chociażby z powodu, o którym wspomniał ~piotr90. Użytkownik raczej nie wpadnie na pomysł z nazwą akcji, ale robot już może. Poza tym ten helper odpala całą machinę, a nie tylko renderuje plik widoku.
Go to the top of the page
+Quote Post
melkorm
post
Post #9





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Cytat
To rozwiązanie nie jest najlepsze, chociażby z powodu, o którym wspomniał ~piotr90. Użytkownik raczej nie wpadnie na pomysł z nazwą akcji, ale robot już może. Poza tym ten helper odpala całą machinę, a nie tylko renderuje plik widoku.


Dispatch odapla, fakt trochę nie fajnie, ale np gdyby chciał mieć stronę z tymi kategoriami musiałby zrobić i tak pustą akcję gdzie w pustym widoku by wywoływał helpera widoku (IMG:style_emoticons/default/smile.gif)
W tym przypadku plugin jest lepszym rozwiązaniem ,ale kto wie czy użytkownik później nie będzie chciał wyświetlać listy tych kategorii w głównym widoku?
Go to the top of the page
+Quote Post
VegetaSSJ
post
Post #10





Grupa: Zarejestrowani
Postów: 78
Pomógł: 2
Dołączył: 21.10.2006

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


http://zendframework.com/manual/en/performance.html

Nie jest fajnie korzystać z Action Helpera (IMG:style_emoticons/default/winksmiley.jpg) kolega @batman opisał ci prawidłowy sposób, nic dodać nic ująć.
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: 25.12.2025 - 17:42