위 요구 사항을 충족하기 위해 TP, CI 등 다른 프레임워크를 사용해 왔는데 쉽게 구현할 수 있습니다. 최근에는 SF2에도 구현하고 adminBundle을 작성해 백엔드를 자동으로 생성해 공통 기능을 제공하고 싶다. 그러나 다음과 같은 문제가 발생했습니다.
백그라운드에서 전역적으로 사용자 액세스 권한을 감지하고 싶기 때문에 각 컨트롤러가 트리거되기 전에 요청 정보를 얻고 사용자가 해당 권한을 부여했는지 확인했습니다. 코드는 다음과 같습니다:
그런 다음 배경 레이아웃에 2개의 렌더링을 도입했습니다. 메뉴와 탐색경로 코드는 다음과 같습니다.
으아악이런 식으로 2개의 sub_request가 시작되지만 내 요구사항은 탐색경로와 메뉴를 구현하기 위해 sub_request에서 상위 요청의 URL을 얻는 것입니다. SF에 몇 가지 문제가 있습니다. 누군가 하위 작업에서 요청 스택을 사용하도록 제안했습니다
으아악위 작업에서 request_stack을 가져오려고 했지만 일단 가져오면 이 작업에서 요청이 시작된 것으로 보이며 내 리스너가 트리거된 다음 다른 작업이 실행되어 권한이 부족하다는 메시지로 이동합니다. 나는 혼란스러웠고 이유를 몰랐다.
kernel.controller를 모니터링하고 판단을 추가하며 기본 요청이 있을 때만 권한을 확인하는 리스너:
으아아아2.3의 FilterControllerEvent에는 이 메서드가 없습니다. 다음 로직을 참조하여 직접 작성하세요.
https://github.com/symfony/symfony/blob/2.7/src/Symfony/Component/HttpKernel/Event/KernelEvent.php #L100