Twig-ի կոմպիլյացված կաղապարների դեբագավորում
Ինչպես սովորաբար աշխատում է Twig-ը
Նախադրյալով Twig թեմաների շարժիչը կոմպիլացնում է կաղապարները PHP կոդի և պահում է կոմպիլացված կոդը հիշողության մեջ։ Կոմպիլացված կոդը հարմար չէ զարգացումային գործընթացի համար, քանի որ Twig կաղապարների փոփոխությունները անմիջապես չեն թարմացվում ձեր Drupal կայքում։
Երբ Twig-ն ավարտում է նշված HTML-ի պատրաստումը, Render API-ում ավելանում է ևս մեկ կեշավորման մակարդակ։ Այն վերցնում է Twig-ի պատրաստած HTML-ը և պահպանում է այն այնպես, որ Twig-ը չմասնակցի հաջորդ էջի հարցումներին, հետևաբար Twig-ի դեբագավորման պարամետրերը վերջին հաշվով անտեսվում են։
Կեշերը կարող եք մաքրել Drupal-ի քեշ մաքրելու ինտերֆեյսով, բայց զարգացումը հեշտացնելու համար ավելի լավ է փոխել Drupal-ի կարգավորումները այնպես, որ ոչ Twig-ն, ոչ Render API-ն որևէ բան չկեշավորեն։
Twig-ի և Render API-ի կարգավորում դեբագավորման համար
Twig-ի և Render API-ի երկու մակարդակները պետք է առանձին կարգավորվեն դեբագավորման նպատակներով․
1. Twig շարժիչը տրամադրում է դեբագավորման, ավտոմատ վերալիցքավորման (կոմպիլացման) և կոմպիլացված կաղապարների ֆայլային համակարգում կեշավորման կարգավորումներ, որոնք կարելի է սահմանել ձեր կայքի services.yml ֆայլում։
2. Render API-ի կեշավորումը կարգավորելի է ձեր կայքի settings.php ֆայլում։
Այս երկու քայլերը ստորև մանրամասն կներկայացնենք։
1. Twig-ի կարգավորում դեբագավորման համար
Դրա համար կարող եք օգտագործել Drupal Console կամ կատարել փոփոխությունները ձեռքով։
Ինչպես միացնել դեբագավորումը Drupal Console-ի միջոցով
Սկզբում ներբեռնեք Drupal Console։ Ապա գործարկեք․
drupal site:mode dev
Հիշեք, որ այս հրամանը փոխում է բազմաթիվ կարգավորումներ, բայց ներառում է նաև հետևյալ փոփոխությունը ձեր sites/default/services.yml ֆայլում՝
twig.config: { debug: true }
Դուք պետք է տեսնեք նման հետևյալ պատկերը՝
Ինչպես միացնել դեբագավորումը ձեռքով
1. Գտեք ձեր կայքի services.yml ֆայլը, որը սովորաբար գտնվում է sites/default/services.yml-ում
2. Եթե services.yml ֆայլը գոյություն չունի, պատճենեք default.services.yml-ը և վերանվանեք services.yml-ի։
3. Խմբագրեք services.yml ֆայլը և միացրեք մի կամ մի քանի դեբագավորման պարամետրերը, որոնք ներկայացված են ստորև՝
- Twig-ի դեբագավորման տարբերակներ
- Twig ավտոմատ վերալիցքավորում
- Twig կեշավորում
4. Մաքրել կեշը։
Գտեք twig.config պարամետրերը ձեր services.yml-ում և փոփոխեք դրանք։ Օրինակ՝
parameters: twig.config: debug: true
Դեբագավորման պարամետրերի տարբերակներ
Նշում․ դեբագավորումը չպետք է միացված լինի արտադրական միջավայրում։ Այս երեք պարամետրերը պետք է թողնել անսահմանափակ (դեֆոլտ) արտադրական միջավայրերում։
- debug (դեֆոլտ՝ false)
Երբ debug: true է.
- Յուրաքանչյուր Twig կաղապարի HTML-ի կոդը շրջապատվում է մեկնաբանություններով, որոնք պարունակում են թեմաների վերաբերյալ տեղեկություններ՝ ներառյալ կաղապարային ֆայլերի անունների առաջարկություններ։
- Զգուշացեք, որ այս դեբագային նշումները կխափանեն ավտոմատ թեստերը, որոնք ստուգում են արտածված HTML-ը։ Արդյունաբերական ավտոմատ թեստերի ընթացքում twig_debug-ը պետք է լինի FALSE։
- dump() ֆունկցիան կարելի է օգտագործել Twig կաղապարներում՝ փոփոխականների տվյալների արտածման համար։
- Twig կաղապարները ավտոմատ կկոմպիլացվեն, երբ փոփոխվի աղբյուրի կոդը (տես՝ Auto_reload ստորև)։
- auto_reload (դեֆոլտ՝ null, սահմանվում է debug-ի հիման վրա)
Երբ auto_reload: true է սահմանված.
- Ավտոմատ կկոմպիլացնի Twig կաղապարները, երբ փոխվի աղբյուրի կոդը։ Եթե twig_auto_reload արժեք չեք տրամադրի, այն սահմանվում է twig_debug-ի հիման վրա։
- Եթե հատուկ չեք ուզում auto_reload և չեք միացնում դեբագավորումը, այս պարամետրը չեք փոխի։ Պարզապես միացրեք դեբագավորումը։
- cache (դեֆոլտ՝ true, բայց կարող է շրջանցվել դեբագավորման կողմից)
Երբ cache: false է սահմանված.
- Եթե չեք ունենում հատուկ օգտագործման դեպք, չպետք է անջատեք Twig կեշը։ Երբ միացնում եք Twig դեբագավորումը (կամ միայն auto_reload-ը), Twig կեշը չի խանգարի։ Կեշի անջատումը կհանգեցնի դանդաղ զարգացման, քանի որ Twig կաղապարները պետք է նորից կոմպիլացվեն, անկախ փոփոխությունից։ Հավելյալապես, դուք չեք կարող հեշտությամբ տեսնել կամ դեբագավորել Twig-ի կոմպիլացված կաղապարները (PHP դասեր, որոնք սովորաբար գտնվում են sites/default/files/php/twig թղթապանակում), եթե դրանք չեն պահվում դիսկում։
- Դեֆոլտով Twig կաղապարները կոմպիլացվում և պահվում են ֆայլային համակարգում՝ արագացման համար։ Կեշի անջատումը կբերի Twig կաղապարների նորից կոմպիլացմանը ամեն անգամ, երբ դրանք օգտագործվում են։ Հիմնականում twig_auto_reload-ը պետք է միացված լինի, իսկ կեշը չպետք է անջատվի։
2. Render API կեշի կարգավորում դեբագավորման համար
Նախադրյալով Drupal-ը կեշավորում է բլոկների և սուբյեկտների ցանկացած ռենդեր, որպեսզի արագացնի հաջորդ էջի բեռնման արագությունը։ Սա նշանակում է, որ Twig կաղապարների փոփոխությունները դրանց համար չեն երևա անմիջապես։ Render կեշի կարգավորումը զրոյական կեշ օգտագործելու համար գործնականում անջատում է դա։
Կեշի անջատելու համար ավելացրեք հետևյալ տողերը՝
- settings.php ֆայլում, փորձելով չավելացնել դրանք ձեր արտադրական կայքում
- կամ settings.local.php-ում, սկզբում անջատելով այդ տողերը settings.php-ի ներքևում։
Այս տողերը՝
$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml'; $settings['cache']['bins']['render'] = 'cache.backend.null'; $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';
Միգուցե դրանք արդեն լինեն ձեր settings.php-ում, բայց մեկնաբանված լինեն։ Եթե այո, պարզապես հանեք մեկնաբանությունը (բայց հետո մի մոռացեք նորից մեկնաբանել)։
Դուք դա արեցիք!
Twig API-ի և Render API-ի կարգավորումները ավարտելուց հետո մաքրել բոլոր կեշերը՝ օգտագործելով Drush կամ գնալով Կարգավորումներ -> Արդյունավետություն և սեղմելով «Մաքրել բոլոր կեշերը» կոճակը։
Վերջում թարմացրեք ստուգվող էջը․ պետք է տեսնեք Twig դեբագավորման տեղեկությունները էջի աղբյուրում, և Twig կաղապարների փոփոխությունները անմիջապես կկիրառվեն թարմացված էջում։
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.