Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] Zend_Navigation a menu wielopoziomowe, oraz przerzucenie danych przez jeden kontroler. Dobry pomysł?
Gabrielx
post
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


Witam.

Pracuję obecnie nad stroną która będzie posiadała wiele pozycji menu (kategorii) oraz podmenu (podkategorii)
np.

+Menu
------submenu_1
------submenu_2
-------------submenu_2.1
-------------submenu_2.2
-------------submenu_2.3
------submenu_3

Pozycje menu można dodać przez panel administratora.

Dodatkowo zamierzam aby wszystko było przetwarzane przez jeden kontroler. Widok miałby być dostosowywany względem typu (coś w stylu szablonów, czy to tekst, czy to grafika czy też grafika + text)

Stwierdziłem też że bez sensu ograniczać typ artykułu (grafika, text) względem menu.

Moje pytanie brzmi:

1. Jak opracować bazę danych dla kategorii?

Np. artykuł artykuł by był podczepiony pod submenu_2.3
Zastanawiałem się nad takim rozwiązaniem:

____________________
|id|title |id_sub
|1|Menu |null
|2|submenu_1 |1
|3|submenu_1.1 |2.1
|4|submenu_1.2 |2.2

Lecz wówczas musiałbym sprawdzać czy submenu istnieje dla tej kategorii i jeśli tak to wówczas muszę sprawdzić które z kolei jest to submenu. id_sub byłoby zależne od id menu. Później zapisanie tego do navigation.xml byłoby problematyczne jak i usunięcie popzredniej kategorii i wstawienie nowej dla wstawiania tego poprzez panel administratorski..

2. Druga kwestia to artykuły dla wybranej kategorii. Nie wyobrażam sobie że tworzę ~ 100 akcji (dla kategorii). W jaki sposób później manipulować URI przy wyświetlaniu? Nie za bardzo wiem jak później odczytać taki ciąg np. localhost/index/menu/o_nas/mapka. Lub bynajmniej odczytanie ostatniej wartości (mapka)

Możliwe że nie zrozumiecie tego co chciałem przekazać, więc proszę się dopytywać jak coś.
Go to the top of the page
+Quote Post
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Cytat
Pracuję obecnie nad stroną która będzie posiadała wiele pozycji menu (kategorii) oraz podmenu (podkategorii)
- polecam drzewa metodą IP (więcej znajdziesz w gugle na tą frazę), może to niezbyt wyrafinowane ale skuteczne - tak się robi bazę danych kategorii.

Cytat
Dodatkowo zamierzam aby wszystko było przetwarzane przez jeden kontroler.
- wszystko czyli cała strona? To moim zdaniem ogromny błąd, nie warto próbować bo utkniesz na amen, gdy unikniesz problemów systemowych to dogoni Cię wydajność, warto pomyśleć o podziale aplikacji na kontrolery i akcje.

Cytat
2. Druga kwestia to artykuły dla wybranej kategorii. Nie wyobrażam sobie że tworzę ~ 100 akcji (dla kategorii). W jaki sposób później manipulować URI przy wyświetlaniu? Nie za bardzo wiem jak później odczytać taki ciąg np. localhost/index/menu/o_nas/mapka. Lub bynajmniej odczytanie ostatniej wartości (mapka)


Artykuły np. w postaci listy to jeden kontroler i jedna akcja (chyba, że przewidujesz wiele sposobów wyświetlania artykułów). Przykłady:
Adres ma postać: moduł/kontroler/akcja/parametr_1/wartosc_1/parametr_2/wartosc_2 - przykładowy adres, jeśli wyłączono obsługę modułów to bez modułu, tylko sam kontroler i akcja
Artykuł może mieć np. adres: localhost/artykuly/artykul/title/bardzo_fajny_artykul/id/123456789 - jeden artykuł, kontroler artykuly, akcja artykul, id=123456789
Kategoria: localhost/artykuly/kategoria/title/smiecie_i_rupiecie/id/23 - lista artykułów, kontroler artykuly, akcja kategoria, kategoria id=23
Oczywiście title nie jest niezbędny (id się liczy) ale istotny z punktu widzenia SEO
Go to the top of the page
+Quote Post
Gabrielx
post
Post #3





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


1. A co sądzisz o path enumaration? Czy to nie jest to samo (bo poniekąd wygląda to podobnie lecz nie posiada innych dodatkowych kolumn)
2. Przepraszam źle się wyraziłem, chodziło mi o to co później opisałeś smile.gif
3. Jestem początkujący w ZF, w jaki sposób dodawać parametr/wartość/parametr/wartość?(podsójne paramtery, jak zrobić to dla dwóch parametrów)
Bo zwykle generowałem je w widoku np.
Kod
        <?php foreach ($this->articles as $artykul): ?>
            <tr><td><a href="<?php echo $this->url(
                    array(
                        'action'=>'show',
                        'articles'=>$artykul->idarticles,
                        ),'default')?>"><?php echo $artykul->title;  ?></a>
                </td>
            </tr>
        <?php endforeach; ?>


Ps. są jakieś inne metody generowania urli do akcji lub coś podobnego(inne metody zarządzania tego typu rzeczami)?
Go to the top of the page
+Quote Post
melkorm
post
Post #4





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

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


Cytat
- polecam drzewa metodą IP (więcej znajdziesz w gugle na tą frazę), może to niezbyt wyrafinowane ale skuteczne - tak się robi bazę danych kategorii.


Można też za pomocą Nested Tree:)

Cytat
3. Jestem początkujący w ZF, w jaki sposób dodawać parametr/wartość/parametr/wartość?(podsójne paramtery, jak zrobić to dla dwóch parametrów)
Bo zwykle generowałem je w widoku np.

W tablicy podajesz dalej po prostu:
  1. $this->url(
  2. 'action'=>'show',
  3. 'articles'=>$artykul->idarticles,
  4. 'foo' => 'bar',
  5. ),'default');
  6. // w kontrolerze:
  7. $this->_getParam('foo');


Ten post edytował melkorm 18.09.2012, 18:33:34


--------------------
Go to the top of the page
+Quote Post
Gabrielx
post
Post #5





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


Ok. Dziękuję smile.gif


A co do Nested Tree - bardzo trudno Inserty wykonywać na niej i delety, więc raczej odpada smile.gif (chyba że ktoś wymyślił uniwersalny sposób dla wszystkich przypadków)
Ktoś zna zastosowanie Nested Tree? Dla menu którego struktury się nie zmienia? Bo przecież jeśli chodzi o Zend_Navigation to sporo osób generuje to do xml'a - nie korzysta z DB więc teoretycznie zapytania (w moim przypadku) byłyby tylko wykorzystywane do tworzenia artykułów/nowych elementów menu smile.gif

Ten post edytował Gabrielx 18.09.2012, 22:56:14
Go to the top of the page
+Quote Post
melkorm
post
Post #6





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

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


Jak się tobie nie zmienia Nawigacja to xml/ini file i po sprawie smile.gif


--------------------
Go to the top of the page
+Quote Post
Gabrielx
post
Post #7





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


Właśnie się zmienia smile.gif Oddaję tę stronę klientowi i nie chcę później uczestniczyć co raz przy jakiś mniejszych zmianach.

Czy tak jak wcześniej pisałłem, to dobry pomysł aby db było zależne od xml. Czyli usuwam z DB kategorie/menu = usuwa xml.

Dlatego się pytałem o inne rozwiązania smile.gif
Go to the top of the page
+Quote Post
melkorm
post
Post #8





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

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


Zawsze możesz z bazy generować nawigację lub plik z nawigacją to nie jest jakiś większy problem smile.gif


--------------------
Go to the top of the page
+Quote Post
Gabrielx
post
Post #9





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


Zawsze najprostrze rozwiązania są najlepsze. smile.gif Za bardzo chcę utrudniać sobie życie po prostu - za bardzo pasjonują mnie wyszukane techniki smile.gif

Ten post edytował Gabrielx 19.09.2012, 23:16:10
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 03:27