Symfony2 Twig 템플릿이 있습니다. 이 나뭇 가지 템플릿 (버전 번호)에서 구성 매개 변수의 값을 출력하고 싶습니다. 따라서 다음과 같이 구성 매개 변수를 정의했습니다.
parameters:
app.version: 0.1.0
컨트롤러 에서이 구성 매개 변수를 사용할 수는 있지만 Twig 템플릿에서 구성 매개 변수를 얻는 방법에 대한 실마리는 없습니다.
답변
구성 의 twig globals 섹션 에서 매개 변수 대체를 사용할 수 있습니다 .
파라미터 설정 :
parameters:
app.version: 0.1.0
나뭇 가지 구성 :
twig:
globals:
version: '%app.version%'
나뭇 가지 템플릿 :
{{ version }}
이 메소드는 다음을 사용하여 ContainerAware
클래스에서도 매개 변수를 사용할 수있는 이점을 제공합니다 .
$container->getParameter('app.version');
답변
구성 파일에서 쉽게 정의 할 수 있습니다.
twig:
globals:
version: "0.1.0"
템플릿을 사용하여 액세스하십시오.
{{ version }}
그렇지 않으면 매개 변수를 표시하기 위해 Twig 확장을 사용해야합니다.
답변
내장 된 서비스 매개 변수 시스템을 활용하여 값을 분리하거나 재사용 할 수 있습니다.
# app/config/parameters.yml
parameters:
ga_tracking: UA-xxxxx-x
# app/config/config.yml
twig:
globals:
ga_tracking: "%ga_tracking%"
이제 ga_tracking 변수 는 모든 Twig 템플릿에서 사용할 수 있습니다.
<p>The google tracking code is: {{ ga_tracking }}</p>
이 파라미터는 컨트롤러 내부에서도 사용할 수 있습니다.
$this->container->getParameter('ga_tracking');
서비스를 전역 나뭇 가지 변수 (Symfony2.2 +)로 정의 할 수도 있습니다.
# app/config/config.yml
twig:
# ...
globals:
user_management: "@acme_user.user_management"
http://symfony.com/doc/current/templating/global_variables.html
설정하려는 전역 변수가 더 복잡하면 (예 : 객체) 위의 방법을 사용할 수 없습니다. 대신, Twig Extension 을 작성 하고 전역 변수를 getGlobals 메소드의 항목 중 하나로 리턴해야합니다.
답변
최신 버전의 Symfony2 ( parameters.yml
대신parameters.ini
)에서 키-값 쌍 대신 객체 또는 배열을 저장할 수 있으므로 다음과 같이 전역을 관리 할 수 있습니다.
config.yml (한 번만 편집) :
# app/config/config.yml
twig:
globals:
project: %project%
parameters.yml :
# app/config/parameters.yml
project:
name: myproject.com
version: 1.1.42
그런 다음 나뭇 가지 파일에서 {{ project.version }}
또는{{ project.name }}
.
참고 : 나는 app
Symfony의 변수이기 때문에 개인적으로을 추가하는 것을 좋아하지 않으며 앞으로 무엇을 저장할 것인지 모르겠습니다.
답변
위의 주어진 대답은 정확하고 잘 작동합니다. 나는 다른 방식으로 사용했다.
config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: app.yml }
- { resource: app_twig.yml }
app.yml
parameters:
app.version: 1.0.1
app_twig.yml
twig:
globals:
version: %app.version%
내부 컨트롤러 :
$application_version = $this->container->getParameter('app.version');
// Here using app.yml
내부 템플릿 / 단일 파일 :
Project version {{ version }}!
{# Here using app_twig.yml content. #}
{# Because in controller we used $application_version #}
컨트롤러 출력을 사용하려면
제어 장치:
public function indexAction() {
$application_version = $this->container->getParameter('app.version');
return array('app_version' => $application_version);
}
템플릿 / Twig 파일 :
Project version {{ app_version }}
나는 더 나은 이해를 위해 다른 것을 언급했다.
답변
나뭇 가지 확장을 사용하면 parameter
나뭇 가지 기능을 만들 수 있습니다 .
{{ parameter('jira_host') }}
TwigExtension.php :
class TwigExtension extends \Twig_Extension
{
public $container;
public function getFunctions()
{
return [
new \Twig_SimpleFunction('parameter', function($name)
{
return $this->container->getParameter($name);
})
];
}
/**
* Returns the name of the extension.
*
* @return string The extension name
*/
public function getName()
{
return 'iz';
}
}
service.yml :
iz.twig.extension:
class: IzBundle\Services\TwigExtension
properties:
container: "@service_container"
tags:
- { name: twig.extension }
답변
$this->getParameter('app.version')
컨트롤러에 바인딩 하여 나뭇 가지 매개 변수를 묶은 다음 렌더링 할 수 있습니다.