在我的PHP项目中,我正在使用DOMDocument获得这样的视图:
页面对象的方法
protected function html_page_template(){
wp_debug_log();
$htmlTmpl = new \DOMDocument;
$html = '<div class="wrap">';
$html .= $this->writeTopPage();
$html .= "<hr/>";
$html .= "</div>";
$htmlTmpl->loadXML($html);
$this->current_template->write( $htmlTmpl );
echo $htmlTmpl->saveXML();
}
在模板对象($this->current_template
中,我有一种write
方法来获取页面内容。修改已经注入的HTML也很有用。
模板对象的方法
public function write(&$htmlTmpl)
{
//Link "Options advanced"
$link_advanced_options = $htmlTmpl->createElement("a", esc_html( __( "Avanced Options", PLUGIN_DOMAIN ) ) );
$linkOptionsHrefAttribute = $htmlTmpl->createAttribute("href");
$linkOptionsHrefAttribute->value = "#";
$linkOptionsClassAttribute = $htmlTmpl->createAttribute("class");
$linkOptionsClassAttribute->value = "options-advanced-link";
$link_advanced_options->appendChild($linkOptionsHrefAttribute);
$link_advanced_options->appendChild($linkOptionsClassAttribute);
$htmlTmpl->importNode($link_advanced_options, true);
//Section "Options advanced
$section_advanced_options = $htmlTmpl->createElement( "section" );
$sectionOptionsClassAttribute = $htmlTmpl->createAttribute("class");
$sectionOptionsClassAttribute->value = "options-advanced-section";
$section_advanced_options->appendChild($sectionOptionsClassAttribute);
//Input "From Date"
$inp_element = $htmlTmpl->createElement( "input" );
$inpTypeAttribute = $htmlTmpl->createAttribute("type");
$inpTypeAttribute->value = "date";
$inpValueAttribute = $htmlTmpl->createAttribute("value");
$inpValueAttribute->value = "2018-06-25";
$inp_element->appendChild($inpTypeAttribute);
$inp_element->appendChild($inpValueAttribute);
//Button "Download foos"
$btn_element = $htmlTmpl->createElement("a", "Download foos" );
$btnClassAttribute = $htmlTmpl->createAttribute("class");
$btnClassAttribute->value = "add-new-h2 h4a-button";
$btnHrefAttribute = $htmlTmpl->createAttribute("href");
$admin_build_url = "myexample.com?run=foo";
$btnHrefAttribute->value = $admin_build_url;
$btn_element->appendChild($btnClassAttribute);
$btn_element->appendChild($btnHrefAttribute);
$section_advanced_options->appendChild($btn_element);
$section_advanced_options->appendChild($inp_element);
$nodeLine = $htmlTmpl->getElementsByTagName("hr")->item(0);
$parentNode = $htmlTmpl->getElementsByTagName("div")->item(0);
$parentNode->insertBefore( $section_advanced_options, $nodeLine );
$parentNode->insertBefore( $link_advanced_options, $section_advanced_options );
}
为方便起见,我想编写代码以HTML字符串的形式插入并将其转换为DomNode以使用$ parentNode-> insertBefore()。 我该怎么办?