문제

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}}을 사용하지 않는 이유는 무엇입니까?

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