alex-yashin/php-simple-html

1.0.0 2022-06-17 08:31 UTC

This package is auto-updated.

Last update: 2024-08-31 00:35:52 UTC


README

一个用于生成HTML代码的类。基本方法取自Yii2(从BaseHtml类中移除了所有具有复杂依赖的特定于Yii2的方法)。

增加了以下方法

Html::nest

Html::nest($path, $content = '', $rootOptions = [])

根据类似于xpath的模板生成嵌套Html标签链。

echo Html::nest('div#my-wrapper/a#my.link[href=#][title=my link]')
//<div id="my-wrapper"><a id="my" class="link" href="#" title="my link"></a></div>

如果存在ID、类或属性,则可以省略div标签的提及。参数$conten被放置在链中最深层的标签的内容中。在同一层嵌套中,相邻关系通过加号+指定,从相邻关系的结束标签开始继续链。

echo Html::nest('.step/.circle+p', 10) 
//<div class="step"><div class="circle"></div><p>10</p></div>

属性可以不写值,此时值将等于属性名

echo Html::nest('div/span[disabled]', 'hello!');
//<div><span disabled="disabled">hello!</span></div>

参数$rootOptions补充外部标签的属性。语法与Html::tag相同

echo Html::nest('.step/.circle+p', 10, ['class' => 'active'])
//<div class="step active"><div class="circle"></div><p>10</p></div>

Html::zz

Html::zz($template, ...$items)

一个更复杂的模板引擎,不仅可以处理单个嵌套标签链,还可以模拟复杂的标签树。为此,使用括号来指定层次关系,使用百分号%来指定占位符。相邻关系与nest中的用法相同,通过加号+指定。

echo Html::zz('.circle([data-name=%]+.round%+p)+span%', 'step', 10, 20);
//<div class="circle"><div data-name="step"></div><div class="round">10</div><p></p></div><span>20</span>

也可以用于生成具有属性占位符的单个标签

echo Html::zz('input.quantity-field[type=number][name=quantity][step=1][readonly][data-sku=%]', 'SKU');
//<input type="number" class="quantity-field" name="quantity" readonly="readonly" step="1" data-sku="SKU">

Html::br

简单地输出<br>标签

echo Html::br();
//<br>

Html::li

Html::li($content = '', $options = []);

生成<li>标签

echo Html::li('test', ['class' => 'active']);
//<li class="active">test</li>