twig/PHP와 함께 사용하는 확장 프로그램이 있습니다.나뭇 가지에서 상위 변수 재정의
내 확장은 다음과 같은 라인을 찾습니다
{% module 'blog' with {'controller':'controllers/posts.php', 'view':'templates/posts.html'} %}
을 내 토큰을 파서 내부 내가 컨트롤러 (posts.php)의 경로를 검색하고 파일을 포함 -이 모든 작업 괜찮습니다.
"posts.php"파일에서 $ 컨텍스트를 덮어 쓰거나 그렇지 않으면 부모 템플릿의 변수를 덮어 쓰려고합니다. 그러나 $ context가 참조로 전달되지 않아 덮어 쓸 수없는 것 같습니다.
내 (base.html) 템플릿 파일은 다음과 같습니다 (읽기 쉽도록 단축 됨).
<title>{{meta.title}}</title>
{% block content %} Default content {% endblock %}
내 index.html을 (base.html 확장 템플릿은) 다음과 같습니다
{% extends 'base.html' %}
{% block content %}
{% module 'blog' with {'controller':'controllers/posts.php', 'view':'templates/posts.html'} %}
{% endblock %}
내부 "posts.php"나는 실제로입니다 $ 컨텍스트의 최우선을 ((시도)하고 변수 템플릿이 같은)로 렌더링됩니다 :
$context['meta']['title'] = microtime(true);
그리고 전체 기능을 포장하는 것은 분명히 Slimphp에서 렌더링 방식 (이다 - 간결 간체)
$twig->render('index.html', ['meta'=>['title'=>'Set from slim']]);
meta.title 변수는 부모 템플릿에서 항상 "슬림하게 설정"됩니다. 시도 할 때마다 무시할 수 없습니다.
나는 컨테이너 클래스를 사용하여 정적으로 변수 가져 오기/설정을 시도했지만 부모를 시도 할 때 항상 원래 "Set from slim"변수 값으로 렌더링됩니다. 나는 핀이 $ context가 나뭇 가지 주변의 참조에 의해 전달되지 않는다는 사실을 지적했다.
분명히 과거에 누군가가이 벽을 치고 주변을 해결 했습니까?
도와주세요! 사전에
감사
편집 :
제안 대답은 질문에 대답하지 않습니다. 템플릿 파일 내부에서 렌더링을 연기하려고 시도 할 때 런타임에 다른 파일의 변수를 무시하고 싶습니다.
[부모 블록 확장 from embed template] (http://stackoverflow.com/questions/42702118/extends-parent-blocks-from-embed-template) – DarkBee
거기에 링크 된 확장 기능을 시청하십시오.그것은 당신에게 방향을 주어야합니다 – DarkBee
고맙지 만 그 템플릿 안에 변수를 설정하려고하지 않습니까? 포함 된 다른 파일에서 설정/덮어 쓰기를 원합니다. –