HTML checkbox input field
This commit is contained in:
parent
b8346af548
commit
726c8caf54
|
|
@ -161,6 +161,7 @@ class Html
|
||||||
'img' => array('Image', $node, $element, $styles, null, null, null),
|
'img' => array('Image', $node, $element, $styles, null, null, null),
|
||||||
'br' => array('LineBreak', null, $element, $styles, null, null, null),
|
'br' => array('LineBreak', null, $element, $styles, null, null, null),
|
||||||
'a' => array('Link', $node, $element, $styles, null, null, null),
|
'a' => array('Link', $node, $element, $styles, null, null, null),
|
||||||
|
'input' => array('Input', $node, $element, $styles, null, null, null),
|
||||||
);
|
);
|
||||||
|
|
||||||
$newElement = null;
|
$newElement = null;
|
||||||
|
|
@ -233,6 +234,24 @@ class Html
|
||||||
return $newElement;
|
return $newElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse input node
|
||||||
|
*
|
||||||
|
* @param \DOMNode $node
|
||||||
|
* @param \PhpOffice\PhpWord\Element\AbstractContainer $element
|
||||||
|
* @param array &$styles
|
||||||
|
*/
|
||||||
|
protected static function parseInput($node, $element, &$styles)
|
||||||
|
{
|
||||||
|
$attributes = $node->attributes;
|
||||||
|
|
||||||
|
if (($type = $attributes->getNamedItem('type')->value) === 'checkbox') {
|
||||||
|
$checked = ($checked = $attributes->getNamedItem('checked')) && $checked->value === "true" ?? false;
|
||||||
|
$textrun = $element->addTextRun();
|
||||||
|
$textrun->addFormField('checkbox')->setValue($checked);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse heading node
|
* Parse heading node
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -632,4 +632,23 @@ class HtmlTest extends AbstractWebServerEmbeddedTest
|
||||||
$this->assertTrue($doc->elementExists('/w:document/w:body/w:p/w:r/w:rPr/w:spacing'));
|
$this->assertTrue($doc->elementExists('/w:document/w:body/w:p/w:r/w:rPr/w:spacing'));
|
||||||
$this->assertEquals(150 * 15, $doc->getElement('/w:document/w:body/w:p/w:r/w:rPr/w:spacing')->getAttribute('w:val'));
|
$this->assertEquals(150 * 15, $doc->getElement('/w:document/w:body/w:p/w:r/w:rPr/w:spacing')->getAttribute('w:val'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests checkbox input field
|
||||||
|
*/
|
||||||
|
public function testInputCheckbox()
|
||||||
|
{
|
||||||
|
$phpWord = new \PhpOffice\PhpWord\PhpWord();
|
||||||
|
$section = $phpWord->addSection();
|
||||||
|
$html = '<input type="checkbox" checked="true" /><input type="checkbox" />';
|
||||||
|
Html::addHtml($section, $html);
|
||||||
|
|
||||||
|
$doc = TestHelperDOCX::getDocument($phpWord, 'Word2007');
|
||||||
|
|
||||||
|
$this->assertTrue($doc->elementExists('/w:document/w:body/w:p[1]/w:r/w:fldChar/w:ffData/w:checkBox'));
|
||||||
|
$this->assertEquals(1, $doc->getElement('/w:document/w:body/w:p[1]/w:r/w:fldChar/w:ffData/w:checkBox/w:checked')->getAttribute('w:val'));
|
||||||
|
|
||||||
|
$this->assertTrue($doc->elementExists('/w:document/w:body/w:p[2]/w:r/w:fldChar/w:ffData/w:checkBox'));
|
||||||
|
$this->assertEquals(0, $doc->getElement('/w:document/w:body/w:p[2]/w:r/w:fldChar/w:ffData/w:checkBox/w:checked')->getAttribute('w:val'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue