ZF: Zend_Navigation

Zend FrameworkJako, że w Zend Framework 1.8 pojawił się nowy komponent do generowania menu, map stron itp. – Zend_Navigation chciałem z niego skorzystać w aktualnym projekcie, aby nie wynajdować koła od nowa.

Ale w przypadku ZF nie jest to takie proste. Prawie wszystko co nowe w frameworku jest marginalnie opisany w dokumentacji. A nawet jeśli lepiej to brak wiążących przykładów (kontroler – widok – helper). Porozrzucane itp. Wciąż wierzę, że kiedyś dokumentacja ZF osiągnie taki poziom jak ezComponents, gdzie opanowanie komponentu Graph zajęło mi kilka minut.

A wystarczyło wszystko zawrzeć w 6 prostych krokach. Ostatecznie menu zawarłem w pliku navigation.xml, mały wycinek:

Tak samo jak <controller/> możemy dodatkowo podać akcję, która ma się wykonać. Ewentualnie możemy podać gotowy link jako <uri/>.
Następnie wystarczy zrobić zasób dla nawigacji:

Zamiast podawać $config możemy wstawić gotową tablicę phpową, ale przez to zrobiłby się bałagan i trudny dostęp, gdybyśmy chcieli coś zmieniać. W naszym magicznym pliku application.ini dodajemy poniższą linijkę celem ładowania nowego zasobu:

Dodatkowo w zasobie Acl powiązałem role z menu, dzięki temu nie mamy linków, do których brakuje nam dostępu. Robi się to następująco, u mnie w Zextend_Application_Resource_Acl:

Pozostało nam już tylko wyświetlenie naszego menu w widoku/layoucie. Odpowiedni helper automagicznie załaduje sobie nasz rejestr nazwany 'Zend_Navigation’:

W ten sposób wygenerujemy następujący kod:

Finito 🙂 Można byłoby zrobić samo generowanie ACL i nawigacji bez zabawy z XML, ale przy aktualnym projekcie jest mi to zbędne. W moich delicjach można znaleźć: Zend Framework: Documentation – NavigationNavigation Helper.