云客Drupal源码分析之响应附属处理attachments_processor

本文详细解析Drupal8中响应附属处理的各个方面,包括library、drupalSettings、html_head、html_head_link、feed、http_header、placeholders以及html_response_attachment_placeholders。通过讲解这些内容,帮助读者理解Drupal8的渲染管道和附属物处理机制。
摘要由CSDN通过智能技术生成

在阅读本主题前,你需要先阅读本系列的渲染数组、渲染器、渲染占位符等主题

附属物attachments就是渲染数组的#attached部分,这里称为“附属物”而不叫做“附件”,以便和图片、文件等概念相区别,附属物有如下8个类型(以在#attached中的键名列出,如果添加了其他键名将引起错误):
library:资源库,保存css、js、库js设置等,详见本系列资源库详解
drupalSettings:在渲染数组中设置的JavaScript 设置数据
html_head:在 HTML <head>部分的标签
html_head_link: 在 HTML <head>部分的<link>标签,是html_head的特殊情况
feed:RSS 订阅,是html_head_link的特殊情况
http_header:HTTP 响应头和状态码等
placeholders:占位内容,严格说来这不算附属物,只是系统将其和附属物在同一个服务中处理
html_response_attachment_placeholders:保存四大类别附属物的占位符,见后

在系统中对附属物的处理是在派发kernel.response事件阶段:
订阅器服务:html_response.subscriber
类:\Drupal\Core\EventSubscriber\HtmlResponseSubscriber
执行方法:onRespond
优先级:0-0
该订阅器只针对html响应进行处理:
\Drupal\Core\Render\HtmlResponse
只是起到简单的订阅事件作用,全部附属物处理工作在附属物处理器中进行,见下。

附属物处理器:
负责在上述订阅器中对HTML响应进行附属物占位符替换处理
服务名:html_response.attachments_processor
类:Drupal\Core\Render\HtmlResponseAttachmentsProcessor
获取方法:\Drupal::service('html_response.attachments_processor');

该处理器只针对\Drupal\Core\Render\HtmlResponse响应,这也是系统HTML页面的主要响应,下文针对各类附属物单独讲解。

内容占位符placeholders:
placeholders严格说来不属于附属物,而是页面内容,往往是不合适缓存的需要动态产生的页面局部内容,需要内容占位的元素(元素即渲染数组)键名只能包含:'#lazy_builder', '#cache', '#create_placeholder','#weight', '#printed',其中'#lazy_builder'指定了一个回调用于产生真实内容的渲染数组,在html字符串中这样的内容先以占位符占位,占位符由渲染占位符产生器(服务id:render_pla

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值