주어진 내용 만 제시하는보기 레이어 패턴은 훌륭하지만 모든 것이 가능한지 어떻게 알 수 있습니까? TWIG에 “모든 정의 된 변수 나열”기능이 있습니까? 변수를 덤프하는 방법이 있습니까?
내가 찾은 해결책은 function 을 주입하여 기존의 PHP 디버그 도구 를 사용할 수있는 함수를 정의하는 것이었지만, 내가 찾은 모든 참조에는이 멋진 두 줄의 코드가 포함되어 있지만 어디에 어디에도 지정되어 있지 않습니다. 그들을 배치하십시오. $ loader 변수가 정의 되어 있다는 사실에 따라 /app/config/autoload.php를 시도했지만 $ loader에 잘못된 종류가 있습니다. 나뭇 가지 함수를 추가하기 위해 PHP 코드를 어디에 배치합니까?
답변
Twig 1.5부터 정답은 덤프 기능을 사용하는 것입니다. Twig 문서에 완전히 문서화되어 있습니다 . 다음은 Symfony2에서이를 활성화하기위한 설명서입니다.
{{ dump(user) }}
답변
여기debug
에 설명 된 태그 를 사용할 수 있습니다 .
{% debug expression.varname %}
편집 : Twig 1.5 dump
부터는 더 이상 사용되지 않으며 새로운 기능으로 대체되었습니다 (이제 기능이며 더 이상 태그가 아닙니다). 위의 답변도 참조하십시오.
답변
그래서 부분적으로 약간 hackish가 작동했습니다.
- 설정
twig: debug: 1
에서app/config/config.yml
-
이것을 config_dev.yml에 추가하십시오
services: debug.twig.extension: class: Twig_Extensions_Extension_Debug tags: [{ name: 'twig.extension' }]
-
sudo rm -fr app/cache/dev
- 대신 내 자신의 디버그 기능을 사용하기 위해
print_r()
열고vendor/twig-extensions/lib/Twig/Extensions/Node/Debug.php
변경했습니다.print_r(
에d(
추신. 필터와 확장을 추가하기 위해 $ twig 환경을 얻는 방법 / 위치를 여전히 알고 싶습니다.
답변
응용 프로그램에서 Twig를 구성 요소 로 사용하는 경우 다음을 수행 할 수 있습니다.
$twig = new Twig_Environment($loader, array(
'autoescape' => false
));
$twig->addFilter('var_dump', new Twig_Filter_Function('var_dump'));
그런 다음 템플릿에서 :
{{ my_variable | var_dump }}
답변
Twig를 독립 실행 형 구성 요소로 사용하는 경우 덤프 (변수) 기능이 즉시 작동 하지 않을 수 있으므로 디버깅을 활성화하는 방법에 대한 몇 가지 예가 있습니다.
독립형
이것은 icode4food에서 제공하는 링크에서 발견되었습니다.
$twig = new Twig_Environment($loader, array(
'debug' => true,
// ...
));
$twig->addExtension(new Twig_Extension_Debug());
실 렉스
$app->register(new \Silex\Provider\TwigServiceProvider(), array(
'debug' => true,
'twig.path' => __DIR__.'/views'
));
답변
모든 사용자 정의 변수를 덤프하십시오.
<h1>Variables passed to the view:</h1>
{% for key, value in _context %}
{% if key starts with '_' %}
{% else %}
<pre style="background: #eee">{{ key }}</pre>
{{ dump(value) }}
{% endif %}
{% endfor %}
내 플러그인을 사용할 수 있습니다 (출력을 멋지게 형식화 할 것입니다).
답변
{{ dump() }}
나를 위해 작동하지 않습니다. PHP
질식. 중첩 수준이 너무 깊습니다.
를 debug
사용하는 경우 템플릿 을 실제로 수정 해야하는 debugger
것은 이와 같은 확장 입니다.
그런 다음 중단 점을 설정하고 {{ inspect() }}
필요할 때마다 전화 하면됩니다. {{ dump() }}
디버거 와 동일한 정보를 얻습니다 .