TWIG 템플릿에서 세션 액세스
인터넷에서 글로벌 액세스 방법을 많이 검색했습니다.$_SESSION
TWIG 템플릿에서 어레이를 찾은 결과:{{app.session.get('index')}}
하지만 제가 부를 때는 빈 문자열을 반환합니다.나는 있습니다$_SESSION['filter']['accounts']
전화를 걸 때 이 오류가 발생합니다.{{app.session.get('filter').accounts}}
:Item "accounts" for "" does not exist
내가 뭘 잘못하고 있는 거지?
{{app.session}}
에 대한 참조Session
반대가 아닌 반대$_SESSION
배열. 내 생각엔.$_SESSION
모든 Twig 템플릿에 명시적으로 전달하거나 사용 가능한 확장을 수행하지 않는 한 어레이에 액세스할 수 있습니다.
Symfony2는 객체 지향이므로 다음을 사용해야 합니다.Session
어레이에 의존하지 않고 세션 속성을 설정할 개체입니다.Session
오브젝트는 사용자로부터 이 항목을 추상화하므로 세션 변수를 저장하는 것이 사용자에게 숨겨지므로 세션을 데이터베이스에 저장하는 것이 더 쉽습니다.
따라서 세션에서 속성을 설정하고 다음을 사용하여 twig 템플릿의 값을 검색합니다.Session
물건.
// In a controller
$session = $this->get('session');
$session->set('filter', array(
'accounts' => 'value',
));
// In Twig
{% set filter = app.session.get('filter') %}
{% set account-filter = filter['accounts'] %}
잔가지 설정
$twig = new Twig_Environment(...);
$twig->addGlobal('session', $_SESSION);
그런 다음 템플릿 내에서 세션 값에 액세스합니다. 예:
$_SESSION['username'] in php file Will be equivalent to {{ session.username }} in your twig template
간단한 방법은 $_SESSION 배열을 전역 변수로 정의하는 것입니다.이를 위해 다음 기능을 추가하여 확장 폴더의 core.php 파일을 편집합니다.
public function getGlobals() {
return array(
'session' => $_SESSION,
) ;
}
그러면 다음과 같이 모든 세션 변수에 액세스할 수 있습니다.
{{ session.username }}
에 액세스하고 싶은 경우
$_SESSION['username']
Twig에서 세션 변수에 액세스하는 방법은 다음과 같습니다.
{{ app.session.get('name_variable') }}
이렇게 하는 가장 깨끗한 방법은 사용자 지정 TwigExtension을 생성하고 해당 TwigExtension을 재정의하는 것입니다.getGlobals()
방법.사용하기 보다는$_SESSION
심포니의 것을 사용하는 것도 더 좋습니다.Session
클래스는 세션 시작/종료를 자동으로 처리하기 때문입니다.
/src/AppBundle/Twig/AppExtension에 다음과 같은 확장자가 있습니다.php:
<?php
namespace AppBundle\Twig;
use Symfony\Component\HttpFoundation\Session\Session;
class AppExtension extends \Twig_Extension {
public function getGlobals() {
$session = new Session();
return array(
'session' => $session->all(),
);
}
public function getName() {
return 'app_extension';
}
}
그런 다음 /app/config/services.yml에 추가합니다.
services:
app.twig_extension:
class: AppBundle\Twig\AppExtension
public: false
tags:
- { name: twig.extension }
그런 다음 다음을 사용하여 모든 보기에서 세션에 액세스할 수 있습니다.
{{ session.my_variable }}
언급URL : https://stackoverflow.com/questions/8399389/accessing-session-from-twig-template
'programing' 카테고리의 다른 글
워크북의 시트 수를 아는 방법은 무엇입니까? (0) | 2023.08.20 |
---|---|
Chrome 디버거가 닫힌 로컬 변수가 정의되지 않았다고 생각하는 이유는 무엇입니까? (0) | 2023.08.15 |
Python: 목록 위에서 반복하는 동안 목록 요소 제거 (0) | 2023.08.15 |
안드로이드.뷰부풀리기예외:이진 XML 파일: 클래스 조각을 채우는 동안 오류가 발생했습니다. (0) | 2023.08.15 |
점 표기 문자열을 사용하여 객체 자식 속성 액세스 (0) | 2023.08.15 |