Add this to the require block in your composer.json
.
{
"require": {
"windwalker/dom": "~2.0"
}
}
This is a convenience class to create XML and HTML element in an OO way.
DomElement and DomElements is use to create XML elements.
use Windwalker\Dom\DomElement;
$attrs = array('id' => 'foo', 'class' => 'bar');
echo $dom = (string) new DomElement('field', 'Content', $attrs);
Output:
<field id="foo" class="bar">Content</field>
Add Children
use Windwalker\Dom\DomElement;
$attrs = array('id' => 'foo', 'class' => 'bar');
$content = array(
new DomElement('option', 'Yes', array('value' => 1)),
new DomElement('option', 'No', array('value' => 0))
)
echo $dom = (string) new DomElement('field', $content, $attrs);
The output wil be:
<field id="foo" class="bar">
<option value="1">Yes</option>
<option value="0">No</option>
</field>
HtmlElement is use to create HTML elements, some specific tags will force to unpaired.
use Windwalker\Dom\HtmlElement;
$attrs = array(
'class' => 'btn btn-mini',
'onclick' => 'return fasle;'
);
$html = (string) new HtmlElement('button', 'Click', $attrs);
Then we will get this HTML:
<button class="btn btn-mini" onclick="return false;">Click</button>
$class = $html['class'];
It is a collection of HtmlElement set.
$html = new HtmlElements(
array(
new HtmlElement('p', $content, $attrs),
new HtmlElement('div', $content, $attrs),
new HtmlElement('a', $content, $attrs)
)
);
echo $html;
OR we can iterate it:
foreach ($html as $element)
{
echo $element;
}
DomFormatter
and HtmlFormatter
will help us format XML
/ HTML
string.
$xml = '<field id="foo" class="bar"><option value="1">Yes</option><option value="0">No</option></field>';
DomFormatter::format($xml);
Result
<field id="foo" class="bar">
<option value="1">Yes</option>
<option value="0">No</option>
</field>
HtmlFormatter
will convert some tags to unpaired element, e.g. <img>
.
XmlHelper
using on get attributes of SimpleXmlElement
.
use Windwalker\Dom\SimpleXml\XmlHelper;
$xml = <<<XML
<root>
<field name="foo" type="bar" readonly="true">
<option></option>
</field>
</root>
XML;
$xml = simple_xml_load_string($xml);
$element = $xml->xpath('field');
$name = XmlHelper::getAttribute($element, 'name'); // result: foo
// Same as get()
$name = XmlHelper::get($element, 'name'); // result: foo
getBool()
can help us convert some string link true
, 1
, yes
to boolean TRUE
and no
, false
, disabled
, null
, none
, 0
string to booleand FALSE
.
$bool = XmlHelper::getBool($element, 'readonly'); // result: (boolean) TRUE
Just an alias of getBool()
but FALSE will return TRUE
.
If this attribute not exists, use this value as default, or we use original value from xml.
XmlHelper::def($element, 'class', 'input');