Witam. Mam w layoucie dwa menu, przy czym pierwsze jest stałe, a drugie to są jakby opcje widoku. Przykładowo w wiadomościach w menu powinno być utwórz wiadomość, skrzynka odbiorcza. Jednak widok jest renderowany po widoku więc umieszczenie tam zmiennych i tego menu nie wchodzi w grę, a w kontrolerze to też niewygoda. Sposobem jakim można było by to rozwiązać jest js w widoku który by wstawił menu, jednak było by to opóźnione i złe do zarządzania. Czy jest może jakiś lepszy sposób na rozwiązanie tego problemu?
Możesz zrobić podwidok, który będzie generował drugie menu bez użycia js. W podobny sposób generuję menu u siebie, w zależności o controlera i widoku wyciągam z klasy tablicę z menu przez metody statyczne. W widoku odwołanie do metody statycznej tworzę przez złączenie nazwy kotrolera a zmienną w tej metodzie jest rola użytkownika.
<?php
class UzytkownikMenu {
static function menuAdmin($rola = null) {
if ($rola == null) throw new Exception('Błąd generowania menu SSO ADMIN, rola nie może być null');
$menu = array(
array(
'text' => CHtml::link('Informacje', array('/sso/admin/index'))
)
);
return $menu;
}
}
Rozumiem że dla każdego menu mam tworzyć klasę? Mi zależy żeby to było wygodne i żeby w renderowanym widoku było menu, a nie chcę nie potrzebnie dużo plików.