23. 渲染占位符及其产生器

drupal龪龧龥龣龟龜龙龕龑龍龊龍龇龆龃龂龁龀齼齻齹齸齶齵齱齭齪龇龂龁齧齦齢龧齡齝齙齡

齶齵齕齔齒齎齋齈齇
1齇齁齀鼾鼺鼶龇鼳鼱鼳鼰龍齸鼬鼬鼫鼳鼪鼨鼧鼳鼰齸鼣鼟鼳鼛鼺鼶鼬鼗鼓龍龧鼑鼐鼧鼳鼰齸鼟鼌齁鼳鼊龍龧鼑鼇鼧龇鼃鼀齧齦黾黽齦鼳鼊黼黸黵龇鼧黳黰龍齸黮鼧黪黦齸黵黣黟點黝黚黙齎黗黓黑黎黌
2齇齁黇黆黅黁麽麹齡麷麴麰齸麯麬麨齪黁麽齸麥麣麢麟齸黵鼛齀鼾齧齦龍麛麙麕麔齪黌齸龪龧齧齦鼧黳黰齸麒齒麐黁麽麹齡麷麴麰龍麍麌麋麊麈齱齸鼧麄麃齧齦
3齇齁黇黆黅麁麰齪黎麀齸齧齦鹿鹼鹹鹷鹳齸鹰鹯鹭鹪齧齦鹦麃麛麙齸麒齒麐黵麍麌黆黅麋麊麈齱鼧麄麃齧齦


鹢黙鹟鹛鹘鹖齸鹓鹯鹐黟鹍鹊齪麔鹈齧齦鹘鼃鼨齇黙齎黗鹆鹄鹀鹆齀鸼齸鸻鸸黵黇鸷鸳鸱鸯齧齦鼧黳黰鸭鹪黎黌
鹟齒鸬鸫龟龜龙龕龑齸麐黵黇齧齦鼧黳黰龍黆黅麌鸩麈齱齸鼀鸷齱龍鸨鸦鸬鸫鼳鼛龟龜龙齸鸣鸢鼬齧齦黳黰龍黆黅齸龥龣齀鸡齧齦鸟麈黑鸛鸢鸘鸗鸛龟龜龙鸓鸒鸐麐齧齦鼧黳黰龍黆黅龥龣鸢鸏鸋鸈鸅鸃鸁
麒齒鷾麈龥龣黑鷺龍龟龜龙龕龑龇鷷鷶齁龧龍齸麙鷵黙齭龇麐龁鷱鷭鹆龁黓黑龍黆黅鷬龪龧齧齦鼧黳黰龍黆黅鷩鷦鷥龥龣齸鷤鷢齧齦齻齹鷡
鷞鷛鼺鼶鼫麍麌龇鷚齧齦黳黰鸡鷗鷕龧龟龜龙龍黎鷓黝黚鷒Auto-placeholdering鶱鷬鶯鷱龟龜黎鷓鷩齸鶮龇鶬鹹鶯鷱龍鶩黸齪鶧鶣鸛龥龣鶢鸫
黅鶞鶛黑黾龍renderer.config齪龇鶔鶢鸫齸鶑鶏鹳鼟齎齇鷬鶌鶋鶊黆黅鶆鷩

麒齒鷾鶅鼀auto_placeholder_conditions黾麒齒鵼鵺鹯鵶鵲齧齦鼧黳黰龍鵯龊鵬鵨鵥鵺龆鶑鶏鶢鸫龃齸黵黇麐麄麃龟龜龙鸈鸅
鼃鶢鸫麢鵤龍黆黅齪鼃鶣鸛鵣鵟龍鵞鵛鵚鵖齸黵黮龇鵣鵟鵒麽龍鼳鼛鵑鼃黆黅鷡
黵鼛鶑鶏鹳龇鼀core.services.yml黾鵥鵺龍齸龧鼑麒齒鼀\sites\default\services.yml黾鶯鵺鵂齸鶮鹯鴾鴽鴹鴸龂鴷龍鶢鸫

[renderer.config] => Array    
                 (    
                     [required_cache_contexts] => Array    
                         (    
                             [0] => languages:language_interface    
                             [1] => theme    
                             [2] => user.permissions    
                         )    
     
                     [auto_placeholder_conditions] => Array    
                         (    
                             [max-age] => 0    
                             [contexts] => Array    
                                 (    
                                     [0] => session    
                                     [1] => user    
                                 )    
     
                             [tags] => Array    
                                 (    
                                 )    
                         )   

下面来看看drupal具体是怎么实现占位符机制的:

鼃龪龧龟龜龙龕龑龍黆黅鴳龇齧齦鼧黳黰龍齸鼀鴲鷶龍龥龣鴰鷓黾麐麔黵麍麌黆黅龍龥龣麋麊麈齱齸鼀鸏鸢麄麃
龆鶔龀齼鴭龥龣黑鷺鵺鵂龃鼳鼛黝黚鷦鷥鴩鴦龍鴢鼐齇$elements['#lazy_builder']齸鶮龍鹳龇鼳鼛鴑齁鴍鼛鼪鼨龍黑鷺
鴉鼳鼛鼪鼨鴅鼓鸃鴂齸鴉鳾鼛鼪鼨鴅鼓鸃鴂龍鶛黑齸鶛黑鵨鳽龑龆鼬鹄鳻黑鸛鳺鳶鳵NULL
鼃麄麃龟龜龙龕龑龥龣龍黆黅鳨鳦鸬鸫鷦鷥鴩鴦齸龪龧鸃鴂鳢鳞黆黅
鸬鸫龃鷦鷥鴩鴦龍龥龣黑鷺鴅鼓鳛龥龣黑鷺龍鹟齁黆黅鵬鸻鷦鷥鴩鴦鸃鴂鳢鳞齸鹿齁黎鵤龍鳚齻黮鹿齁鳗鼪鼨
鸅鳖鳒鳎齪龇鳛龥龣黑鷺鼧鳋鳈齁'#lazy_builder','#cache','#create_placeholder'鳃鲿龍鼪鼨齦鼀
鲽麔黵鼰龍龥龣黑鷺麄麃龥龣齀龀齼鷞鷛鶮齹鼧齹齝鳛鼧鳛鳢鳞龟龜龙齸鼟鼌麒齒鲺鲸黎龥龣齸鲷鼀鲳龥龣黑鷺黾鳢鳞鼳鼛龟龜龙鷬麕鲽鸸鲲齀鲮鸃鼳鼛龟龜龙鲬龆龥龣鲨鼌markup鷩
鷞鷛齝鳢鳞龟龜龙龍鲢鲬龇鸻龥龣龟龜龙鳢鳞鶞鵞黟龍齸鶮鼀黅鶞黾龍鲡鲟id龆render_placeholder_generator
鳺鵞黟齇Drupal\Core\Render\PlaceholderGenerator 鶮鵞黟龃鲕鲓齇Drupal\Core\Render\PlaceholderGeneratorInterface
鳛鲕鲓麁鲍鲊齸鴑齁鹘鼛鸦鲆齸麌麴麔鹈鸸齹鼧齹鷬龀齼齹鷚鲃鴦鷩鹆鳛鼧鳛鷬鸗鸛龥龣鶢鸫鷞鷛龇鷚鹈鳛鲃鴦鷩鹆鲃鴦龟龜龙鷬鲂鲀齶齵鲃鴦鲢鲬鷩
齱鷾鼳齎龥龣龟龜龙鳢鳞鶞龍齶齵鵞黟齇
鱾鱺龜鸸齇Drupal\Core\Render\PlaceholderGenerator鷬鱸齇鼀麙龀鱷鸢鱳黗鱯黾鵬龪龧鼐鱫鱪鸼鵥鱾鱾鱺龜鸫齸鷾鶅黵鱧鱥鱢鹈麒齒鱡黎鳺鱝鱙鶞鱘鱔黗鱑龜鸫鷩
canCreatePlaceholder鸦鲆齇鼃鲃鴦龟龜龙鳨鳦鼃齦鼀鷦鷥鴩鴦#lazy_builder齸齒鱏#create_placeholder鼧龆false鳵鼧鸬鸫
shouldAutomaticallyPlaceholder鸦鲆齇鶣鸛龥龣鶢鸫齱鷞鷛龇鷚鹈鳛鷕龧龟龜龙龕龑
createPlaceholder鸦鲆齇麒齒鷾鶅鸃鴂鶛黑龇鼳鼛鱫龙鱌鱋鱊齸鲮鸃龍龟龜龥龣黑鷺鴑鱈鱄齇#lazy_builder鹆#cache鹆#markup鹆#attached齸鱁黾#markup鱈鱄龍黆黅齪龇龟龜龙齸麒齒鷾鶅鴂鰾鸓鸒

总结注意:

龟龜黆黅鸻鸃鴂鳢鳞齸鹟齒鷕龧龟龜龙龕龑齀齸#lazy_builder鳨鳦齦鼀
鸬鸫#lazy_builder齀鼟鼌齦鼀#create_placeholder鱁鹳龆false,麐鼧鹯鳢鳞龟龜龙齸鷗龇鰼鲕龥龣齸黵鷶龧鸸鸗龥龣
#lazy_builder鵥鵺龍鸃鴂鲮鸃龍龥龣黑鷺麐鼀鰺鲿鼳鼛龥龣黙齎黗黾龥龣齸鶮龍鳗鼪鼨麒齒龇鰹鰵龍齸鼟鼌龇鹳鶧麄麃齧齦龍黆黅麐鹯鵨齧齦齸黵鰱鰰鸸龥龣龍鶯鰭鰫鰱鴂龧鵞黟
鸏鸋鲮鸃龍龥龣鼺鼶鹯黪鲷鹟齁龍齧齦鳚齻黑鸛齸鱈鰨龟龜龥龣黑鷺龍黑鸛齸黵黇黑鸛鹯鵨drupal龍鷱鷭齧齦鼱鰧龧鶅

本书共69小节:

评论 (写第一个评论)