logo

Լրացուցիչ Բլոկների Տեսակներ (EBT) - Դասավորության Կառուցողի նոր փորձառություն❗

Լրացուցիչ Բլոկների Տեսակներ (EBT) - ձևավորված, կարգավորելի բլոկների տեսակներ՝ սլայդշոուներ, ներդիրներ, քարտեր, բացվող ցանկեր և շատ ուրիշներ։ Ներառված կարգավորումներ՝ ֆոնի, DOM տուփի, JavaScript փլագինների համար։ Փորձեք դասավորությունների կառուցման ապագան արդեն այսօր։

EBT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EBT մոդուլները

❗Լրացուցիչ Պարբերությունների Տեսակներ (EPT) - Պարբերությունների նոր փորձառություն

Լրացուցիչ պարբերության տեսակներ (EPT) - անալոգիական պարբերության վրա հիմնված մոդուլների հավաքակազմ։

EPT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EPT մոդուլները

Scroll

Փոփոխականների հայտնաբերումն ու ստուգումը Twig կաղապարներում

19/06/2025, by Ivan

Menu

Երբ աշխատում եք Twig կաղապարի ֆայլի հետ, մեծ մասը փոփոխականներից նշված է կաղապարի ֆայլի մեկնաբանություններում։ Սակայն երբ դա այդպես չէ կամ երբ թեմաները կամ մոդուլները ներառում են նոր փոփոխականներ, անհրաժեշտ է գտնել բոլոր փոփոխականները, որոնք հասանելի են կաղապարում։ Twig-ը տրամադրում է dump() ֆունկցիա փոփոխականների հայտնաբերման և ստուգման համար կաղապարների ֆայլերում։

dump() ֆունկցիան չի արտածվի, եթե դեբագավորումը միացված չէ։ Իմանալ, թե ինչպես միացնել Twig-ի դեբագավորումը։

Դեբագավորումը միացնելուց հետո dump() ֆունկցիան կարող է օգտագործվել փոփոխականի կամ փոփոխականների մասին տեղեկատվություն արտածելու համար կաղապարում։

Մեկ փոփոխականի ստուգում

Եթե ձեր կաղապարում կա title փոփոխական, հետևյալը կարտածի դրա պարունակությունը․

{{ dump(title) }}

Կաղապարում հասանելի բոլոր փոփոխականների հայտնաբերում

Հայտնաբերելու և արտածելու համար կաղապարում հասանելի բոլոր փոփոխականներն ու դրանց պարունակությունը, ավելացրեք կաղապարում հետևյալը (դեբագավորման միացումից հետո):

{{ dump() }}

Արտածելու համար միայն հասանելի փոփոխականների բանալիները օգտագործեք՝

{{ dump(_context|keys) }}

Բոլոր Twig կաղապարներում հասանելի են նաև հավելյալ համընդհանուր փոփոխականներ՝

  • _self-ն հղում է ընթացիկ կաղապարին և պարունակում է լրացուցիչ տվյալներ կաղապարի մասին, օրինակ՝ կոմպիլացված կաղապարի դասի անունը և Twig միջավայրի մասին տվյալներ։ _self-ն հնացած է և հեռացվել Twig 2.x-ից։
  • _context-ը հղում է ընթացիկ կոնտեքստին և պարունակում է բոլոր փոփոխականները, որոնք փոխանցվել են կաղապարին, ինչպես՝ theme()-ից ուղարկվածները, նախապատրաստված պրեփրոցեսորից կամ կաղապարում սահմանվածները։ {{ dump() }}-ը առանց փոփոխականի նշման հավասար է {{ dump(_context) }}-ին։
  • _charset-ը հղում է ընթացիկ սիմվոլների հավաքածուին։

 

Ստույգ եղեք dump()-ի հետ

Եթե ցանկանում եք տեսնել բոլոր փոփոխականները, բայց dump()-ը հանգեցնում է հիշողության սպառման ռեկուրսիվ տվյալների պատճառով, կարող եք տեսնել _context-ում բոլոր բանալիները՝

<ol>
  {% for key, value in _context  %}
    <li>{{ key }}</li>
  {% endfor %}
</ol>

Այնուհետև օգտագործեք պայմանավորված ստուգում (օրինակ՝ {% if loop.index == 2 %}), և արտածեք արժեքը միայն անհրաժեշտության դեպքում։

Լրացուցիչ տեղեկություններ

Տես Twig-ի dump ֆունկցիայի փաստաթղթումը՝ ավելի շատ իմանալու համար։

xdebug-ով դեբագավորում

Հաճախ խորհուրդ տրվող դեբագավորման եղանակն է օգտագործել IDE-ն xdebug հավելումով։

Հեշտագույն կարգավորումը PHPStorm (կոմերցիոն) + xdebug է։ Microsoft VSCode-ն անվճար, բաց կոդով IDE է, որի համար կան PHP և xdebug հավելումներ, որոնք անում են նույնը առանց կոմերցիոն ծրագրաշարի գնման։

xdebug-ի միջոցով կարող եք քայլ առ քայլ տեսնել փոփոխականի պարունակությունը և դրանով լուծել կոդի անորոշությունները, ինչպես նաև խուսափել անսահման կիկլերից, որոնք կարող են լինել dump կամ kint օգտագործելիս։

Կարող եք օգտվել նաև twig_xdebug փոքր օգտակար մոդուլից, որը օգնում է ցուցադրել հասանելի փոփոխականները xdebug-ում։

kint-ով դեբագավորում

Twig-ում dump() ֆունկցիան հաճախ շատ տեքստ է արտածում՝ դժվարացնելով անհրաժեշտը գտնել հսկայական տվյալների մեջ։

dump()-ի այլընտրանքը kint-ն է, PHP-ի դեբագավորման գործիք։ kint() ֆունկցիան նույն կերպ է աշխատում, ինչպես dump(), բայց ունի ընդլայնվող/համակարգված ինտերֆեյս փոփոխականների համար։

Devel նախագծը տրամադրում է devel kint մոդուլ, որը թույլ է տալիս մշակողներին օգտագործել kint() փոխարեն dump()։

1. Ներբեռնեք devel մոդուլը։
2. Վերցրեք devel kint մոդուլը։
3. Ինչպես dump()-ը, kint() չի արտածի, եթե դեբագավորումը միացված չէ։ Իմանալ Twig դեբագի միացման մասին։
4. Ձեր .twig ֆայլերում օգտագործեք kint() փոփոխականների ստուգման համար՝ ինչպես dump()-ում։
5. Եթե անհրաժեշտ է, ներբեռնեք և տեղադրեք Search Kint մոդուլը՝ բազմաշերտ փոփոխականների որոնման համար։

Whitelist policy մեթոդ և դաս

Օբյեկտների հետ աշխատելիս մենք սահմանափակում ենք (whitelist) թույլատրվող մեթոդների և հատկությունների մի ցանկ TwigSandboxPolicy դասի միջոցով։ Դա արվում է, որպեսզի խուսափել պատահական մեթոդների կանչից կաղապարներում։ Օրինակ՝ {{node.delete}}-ը կդարձնի հանգույցի ջնջում, եթե whitelist-ը չլինի։ Դուք կարող եք ընդլայնել whitelist-ը՝ ավելացնելով ձեր settings.php ֆայլում հետևյալը․

$settings['twig_sandbox_whitelisted_methods'] = [
  'id',
  'label',
  'bundle',
  'get',
  '__toString',
  'toString',
  'referencedEntities',
];

Որտեղ 'referencedEntities'-ը մեթոդն է, որը ցանկանում եք օգտագործել ձեր կաղապարում։