Custom մոդուլի համար Twig սեփական կաղապարներ ստեղծելը
Ընդհանուր գաղափարն Drupal 8-ում այն է, որ ցանկանում եք խուսափել HTML-ի ուղղակի ստեղծումից ձեր օգտատերային մոդուլի PHP կոդում։ Դուք ուզում եք, որ դա կատարվի Twig կաղապարներով։ Նոր Twig կաղապարներ ստեղծելու համար ձեր մոդուլում, կատարեք հետևյալ քայլերը։
Քայլ № 1՝ Օգտագործեք hook_theme ֆունկցիան .module ֆայլում
Ստեղծեք [module].module ֆայլ, եթե այն դեռ չկա, և ավելացրեք կոդ, որը սահմանում է ձեր Twig կաղապարներից յուրաքանչյուրին։ Մասիվի յուրաքանչյուր տարրի բանալին կլինի այն, ինչ կպահանջվի կաղապարը հետագայում կանչելու համար։ Թողեք անուններում առանց գծանշումների (тире):
function test_twig_theme($existing, $type, $theme, $path) { return [ 'my_template' => [ 'variables' => ['test_var' => NULL], ], ]; }
Տեսեք hook_theme() դոկումենտացիան։
Քայլ № 2՝ Կաղապարի կանչ
Այնտեղ, որտեղ դուք վերադարձնում եք render array (օրինակ՝ ձեր մոդուլի routing.yml ֆայլից կանչվող կոնտրոլլերի մեթոդում), կանչեք Twig կաղապարը։ Ստորև նշված է օրինակ՝ մոդուլի կոնտրոլլեր, որը կանչվում է routing.yml ֆայլից։ (Սա ավելացուցիչ տեղեկություններ է պահանջում)
/** * @file * Contains \Drupal\test_twig\Controller\TestTwigController. */ namespace Drupal\test_twig\Controller; use Drupal\Core\Controller\ControllerBase; class TestTwigController extends ControllerBase { public function content() { return [ '#theme' => 'my_template', '#test_var' => $this->t('Test Value'), ]; } }
Դուք նաև կարող եք օգտագործել render մեթոդը արդյունքը ստեղծելու համար, եթե ցանկանում եք դա օգտագործել ձեր կոդի այլ աշխատանքային հոսքի մասով՝
$renderable = [ '#theme' => 'my_template', '#test_var' => 'test variable', ]; $rendered = \Drupal::service('renderer')->renderPlain($renderable);
Կատաղ կետ է, որ սա բազային իրականացում է, որը չի իրականացնի որևէ cache պահպանում։ Render API Overview փաստաթղթում ավելացուցիչ տեղեկություններ կան, թե ինչպես կարելի է ավելացնել cache։ Cache-ի պարագայում, եթե փոփոխեք փոփոխականների անունները (օրինակ՝ «test_var»-ը «my_var»-ի), պետք կլինի թարմացնել cache-ը։
Քայլ № 3՝ Ստեղծել Twig կաղապար
Ձեր մոդուլի ներսում, կաղապարների պանակում ստեղծեք Twig կաղապար։ Ֆայլի անունը պետք է համընկնի hook_theme()-ում սահմանած անունին (փոխարինելով ստորակետերը գծանշումներով)։ Այս դեպքում ֆայլի անունը կլինի my-template.html.twig։
Ահա այն ֆայլը, որը ես օգտագործեցի թեստավորելու համար՝
<p>Test twig template!</p> <p>test_var: {{ test_var }}</p>
Գեղեցկությունն այն է, որ ձեր մոդուլում սահմանված կաղապարի ֆայլը կկիրառվի, եթե այդ նույն անունով ֆայլ չկա ձեր թեմայում։ Պարզապես տեղադրեք ֆայլը ձեր թեմայի կաղապարների պանակում, մաքրեք cache-ը (drush cache-rebuild), և այն կկարդա այդ ֆայլը։
Կարող եք ֆայլը տեղադրել ձեր կայքի թեմայի ցանկացած ենթապանակում՝ կազմակերպված լինելու համար։
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.