簡體   English   中英

Symfony DomCrawler 如何在某個元素后插入 html?

[英]Symfony DomCrawler how to insert html after some element?

HTML 內容

<div class="card mb-3 template">
    <div class="card-body">
        <div class="row mt-3">
            <div class="col-sm-4">
                <h4>This is title</h4>
            </div>
            <div class="col-sm-8 text-right">
                <button>Close</button>
            </div>
        </div>
    </div>
</div>

我想在<h4>之后插入一個div元素,例如

<div class="col-sm-4">
    <h4>This is title</h4>
    <div class="status"></div>
</div>

在 jQuery 中很容易

$('<div class="status"></div>').insertAfter($('.template').find('h4'));

但是,我怎樣才能在 DomCrawler 中做到這一點?

$crawler = new \Symfony\Component\DomCrawler\Crawler($html);
$nodes = $crawler->filter('.template');
foreach ($nodes as $node) { // there are multiple template
    // so how to insert the div element after h4
}

Symfony DomCrawler 只是 PHP 內置的 DOMDocument 類的精美包裝器。 使用 getNode 將獲取您需要執行“insertAfter”方法的元素的 DOMNode 對象。

$crawler = new \Symfony\Component\DomCrawler\Crawler($html);
$domDocument = $this->crawler->getNode(0)->parentNode; //this is how you get domDocument

//creating div
$div = $domDocument->createElement('div');
$div->setAttribute('class', 'status');

//adding div after h4 tag
$h4 = $crawler->filter('h4')->getNode(0);
$h4->parentNode->insertBefore( $div, $h4->nextSibling);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM