TWIG 템플릿에서 세션에 액세스
문제
TWIG 템플릿에서 전역 $_SESSION
배열에 액세스하는 방법을 인터넷에서 많이 검색 한 결과 다음을 찾았습니다. {{app.session.get('index')}}
를 호출 할 때 빈 문자열을 반환합니다.$_SESSION['filter']['accounts']
가 있는데 {{app.session.get('filter').accounts}}
: Item "accounts" for "" does not exist
를 호출 할 때이 오류가 발생합니다.내가 뭘 잘못하고 있니?
해결책
{{app.session}}
는 Session
배열이 아니라 $_SESSION
객체를 나타냅니다.모든 Twig 템플릿에 명시 적으로 전달하거나 사용할 수 있도록 확장을 수행하지 않는 한 $_SESSION
배열에 액세스 할 수 없다고 생각합니다.
Symfony2는 객체 지향적이므로 Session
객체를 사용하여 세션 속성을 설정하고 배열에 의존하지 않아야합니다.Session
개체는이 항목을 추상화하므로 세션 변수를 저장하는 것이 숨겨져 있기 때문에 데이터베이스에 세션을 저장하는 것이 더 쉽습니다.
그러므로 세션에서 속성을 설정하고 Session
개체를 사용하여 나뭇 가지 템플릿의 값을 검색하세요.
라코 디스
도움이 되었기를 바랍니다.
감사합니다.
매트
다른 팁
가지 설정 라코 디스
그런 다음 예를 들어 템플릿 액세스 세션 값 내에서 라코 디스
간단한 트릭은 $ _SESSION 배열을 전역 변수로 정의하는 것입니다.이를 위해 다음 함수를 추가하여 확장 폴더의 core.php 파일을 편집합니다. 라코 디스
그러면 다음과 같이 모든 세션 변수에 액세스 할 수 있습니다. 라코 디스
액세스하려는 경우 라코 디스
Twig에서 세션 변수에 액세스하는 방법은 다음과 같습니다. 라코 디스
이 작업을 수행하는 가장 깨끗한 방법은 사용자 지정 TwigExtension을 만들고 해당 getGlobals()
메서드를 재정의하는 것입니다.$_SESSION
를 사용하는 것보다 Symfony의 Session
클래스를 사용하는 것이 더 좋습니다. 세션 시작 / 중지를 자동으로 처리하기 때문입니다.
/src/AppBundle/Twig/AppExtension.php 에 다음 확장 프로그램이 있습니다. 라코 디스
그런 다음 /app/config/services.yml 에 다음을 추가합니다. 라코 디스
그런 다음 다음을 사용하여 모든보기에서 세션에 액세스 할 수 있습니다. 라코 디스
변수에 액세스하기 위해 {{app.object name.field name}}을 사용하지 않는 이유는 무엇입니까?