문제

PHP Symfony 프레임 워크는 많은 것들에 대해 훌륭하다는 것을 알지만 웹 사이트에 쉽게 확장 가능한 동적 메뉴를 만들기가 어렵다는 것을 알게되었습니다.

다른 Symfony 개발자 들이이 문제를 어떻게 다루 었는지 궁금합니다. 나는 내가 요구하는 것에 대한 간단한 예를 제시 할 것입니다.

www.fool.com으로 이동하면 일반적인 메뉴 설정이 있음을 알 수 있습니다. 그 중 하나가 CSS로 강조된 활성 범주 인 범주 목록.

Symfony 프로젝트 에서이 역동적으로 만들어지는 좋은 방법은 무엇입니까? 모듈에서 모듈로 어떤 종류의 변수를 전달합니다. 나는 아직 우아한 솔루션을 찾지 못했습니다.

도움이 되었습니까?

해결책

일반적으로 메뉴에 나타나고 싶은 모듈/액션 조합 배열을 수동으로 작성합니다. 동적 소스 (구성 파일 또는 데이터베이스와 같은) 에서이 정보를 가져 오는 것은 상당히 쉽습니다.

$this->menu = array(
    'Home' => array('default', 'index'),
    'About Us' => array('default', 'aboutUs'),
    'Products' => array('products', 'index')
);

그런 다음 컨트롤러의 getActionName 및 getMethodName 메소드를 사용하여 메뉴의 어떤 항목이 현재의 항목인지를 결정합니다.

$this->current = array_search(array($this->getModuleName(), $this->getActionName()), $this->menu);

그런 다음 템플릿 내에서 $ 이상 메뉴를 반복하여 메뉴를 작성할 수 있습니다. 그리고 메뉴 항목에서 "현재"클래스를 설정 해야하는지 여부를 결정하기 위해 항목을 $ current와 비교할 수 있습니다.u003Cli> .

당신이주는 멍청한 예제는 2 단계이기 때문에 조금 더 복잡합니다. 이 경우 데이터베이스에서 메뉴 트리를 생성하고 Propel의 중첩 된 세트 지원을 사용하여 메뉴 트리를 생성하고 싶을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top