渲染元素
在上一节中,介绍了在 渲染数组
中通过 #theme
属性以 twig 模板渲染的方式输出 HTML。
通常网站页面的 HTML 结构都比较复杂,并且有很多重复出现的结构,这时编写 渲染数组
的代码就会很困难。
Drupal 定义了一种容器,可以把常用的 渲染数组
预封装起来,使得 渲染数组
的代码易于组织和重用。
这种容器被称为 渲染元素
。
下面的代码定义了一个 渲染元素
,它把上一节中的模板渲染数组代码预封装起来:
use Drupal\Core\Render\Element\RenderElement;
/**
* @RenderElement("my_element")
*/
class MyElement extends RenderElement {
/**
* {@inheritdoc}
*/
public function getInfo() {
return [
'#theme' => 'hello_world',
'#name' => '小明'
];
}
}
代码中的
@RenderElement
被称为注解
,它是 Drupal 插件编写的一种语法, 由 doctrine/annotations 提供。
定义了 渲染元素
后,在 渲染数组
代码中就可以用 #type
属性输出 渲染元素
:
function someController() {
return [
'#type' => 'my_element'
];
}
这里为了明了起见,特意把 渲染元素
中的代码写得简单。在复杂的 HTML 结构下, 渲染元素
会非常有用。
Drupal Core 内建了将近 100 个渲染元素。