트위그 확장 함수를 만들어서 디자인을 맞춤형으로 만들어보세요.
트위그 확장 함수를 만들어서 디자인을 맞춤형으로 만들어보세요.
EC-CUBE 3.0에서 템플릿 엔진은 Twig을 사용합니다.
이번에 우리는 Twig 확장 함수를 만들어 Twig 코드에 사용하는 방법을 소개했다.
이 문장의 종점
Top 페이지에 상품명과 재고를 표시합니다.
Twig 확장 함수를 사용하지 않을 경우
다음 그림과 같이 페이지에 매개변수app
가 있습니다.그러나 Viwe는 다른 설치에 의존해 가독성도 떨어진다.
twig{% set Product = app['eccube.repository.product'].get(2) %}
{{ Product.Name }}:残りあと{{ Product.getStockMax }}個!
Twig 확장 함수를 사용하는 경우
최종 실현의 예
TwigExtensionSample_getProduct
ProductEnity를 반환하는 Twig 확장 함수를 제작함으로써 다음과 같은 내용을 실현할 수 있다.
{% set Product = app['eccube.repository.product'].get(2) %}
{{ Product.Name }}:残りあと{{ Product.getStockMax }}個!
{% set Product = TwigExtensionSample_getProduct(2) %}
{{ Product.Name }}:残りあと{{ Product.getStockMax }}個!
(getProduct와 같은 함수 이름도 가능하지만 함수 이름이 반복되는 문제를 피하기 위해 함수 이름에 플러그인 코드를 추가함)설치 방법
먼저 이쪽에서 초기 플러그인을 다운로드하여 EC-CUBE에 설치/사용하십시오.(설정 잊지 마세요)
https://github.com/ryo-endo/eccube3-twig-extension-sample-plugin/releases/tag/1.0.0
[TwigExtensionSamplePlugin-blank.tar.gz]
/app/Plugin/TwigExtensionSample/ServiceProvider/TwigExtensionSampleServiceProvider.php
의 register
함수에 다음 코드를 추가하면 Twig 코드TwigExtensionSample_getProduct
함수를 사용할 수 있습니다.TwigExtensionSampleServiceProvider.php
public function register(BaseApplication $app)
{
$app['twig'] = $app->share($app->extend('twig', function (\Twig_Environment $twig, \Silex\Application $app) {
// 商品を取得するTwig拡張関数
$twig->addFunction(new \Twig_SimpleFunction('TwigExtensionSample_getProduct', function ($id) use ($app) {
return $app['eccube.repository.product']->get($id);
}));
return $twig;
}));
}
이후 EC-CUBE管理画面>コンテンツ管理>ページ管理>TOPページ>ページ編集
에서 탑 페이지의 트위터 파일에 다음과 같은 코드를 추가하면 이 글의 최초 캡처처럼 표시해야 한다.첫 페이지
{% block main %}
{#--ここから--#}
<div class="row">
<div class="col-sm-12">
{% set Product = app['eccube.repository.product'].get(2) %}
{{ Product.Name }}:残りあと{{ Product.getStockMax }}個!
</div>
</div>
{#--ここまで--#}
완성된 플러그인이 여기에 업로드되었습니다.https://github.com/ryo-endo/eccube3-twig-extension-sample-plugin/releases/tag/1.0.0
[TwigExtensionSamplePlugin-1.0.0.tar.gz]
간단한 해설
$twig->addFunction
에 Twig_SimpleFunction
실례를 제출하여 새로운 확장 함수를 등록했습니다.확장 함수가 다른 종류로 구분되면
위에서 말한 바와 같이 무명 함수로 등록하는 것은 간단하지만 반으로 나눌 수도 있다.
다음은 샘플 코드가 준비되어 있으니 참고하세요.
확장 함수를
Twig/Extension/ProductExtension.php
로 분할합니다.Service Provider에는 클래스만 등록됩니다.
https://github.com/ryo-endo/eccube3-twig-extension-sample-plugin/tree/use_class_file
주의
플러그인을 삭제한 후 Twig 파일에 확장 함수가 남아 있으면 Twig 코드의 컴파일링이 '알 수 없는 함수 호출' 이라고 오류를 일으킬 수 있음을 주의하십시오.
Twig_Error_Syntax in ExpressionParser.php line 574:
Unknown "TwigExtensionSample_getProduct"function in
"string_template29dc7e2fb366c012654f4e32f1588c5ddaa81f6708677d059e47634bf7f5342a"at line 43.
최후
우리는 Twig 확장 함수를 만들어 이를 이용하여 디자인을 맞춤형으로 만드는 방법을 소개했다.
어느 정도 통용되는 확장 함수를 만들 수 있다면 프론트 데스크의 담당자도 맞춤형 디자인을 쉽게 할 수 있을 것 같다.
이번 샘플 플러그인을 기반으로
$twig->addFunction
만 추가하면 간단하게 제작할 수 있으니 꼭 시도해 보세요.그럼 내일은 @chihiro-adachi의 인기 시리즈인'PhpStorm Silex의 코드 보완(3)'E에 따라.
Reference
이 문제에 관하여(트위그 확장 함수를 만들어서 디자인을 맞춤형으로 만들어보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryo-endo/items/096951ba2dba797a9c24텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)