2012-08-07 17 views
19

Ben bu hatayı yakalamak sayfadan bazı varolmayan içeriği almaya çalışın:Güvenli bir şekilde nasıl kontrol edebilirim düğüm boş mu, değil mi? (Symfony'nin 2 Paletli)

The current node list is empty. 
500 Internal Server Error - InvalidArgumentException 

güvenli olarak nasıl bu içeriği var veya yok kontrol edebilirim? İşte çalışmıyor bazı örnekler:

$count = $crawler->filter('.PropertyBody')->count(); 
if($count > 2){ 
    $marks = $crawler->filter('.PropertyBody')->eq(2)->text(); 
} 
+1

teşekkürler dostum. Çözümünüz beni çok kurtardı! –

+0

Sayımın kontrol edilmesi yardımcı oldu! –

cevap

5

böyle bir şey denediniz:

if($crawler->filter('.PropertyBody')->eq(2)->text()){ 
    // bla bla 
} 

if(!empty($crawler->filter('.PropertyBody')->eq(2)->text())){ 
    // bla bla 
} 
if(($crawler->filter('.PropertyBody')->eq(2)->text()) != null){ 
    // bla bla 
} 

TEŞEKKÜRLER, ben kendim yardım?

$text = null; 
if (!empty($body = $crawler->filter('.PropertyBody'))) { 
    if (!empty($node = $body->eq(2))) { 
     $text = $node->text(); 
    } 
} 

$this->assertContains('yourText', $text); 
+2

boş işlev hala atlandı. –

+1

benim için işe yaramadı. Ama kullanarak -> count() hile yaptı – SuN

5
$marks = ($crawler->filter('.PropertyBody')->count()) ? $crawler->filter('.PropertyBody')->eq(2)->text() : ''; 
0
try { 
    $text = $crawler->filter('.PropertyBody')->eq(2)->text(); 
} catch (\InvalidArgumentException $e) { 
    // Handle the current node list is empty.. 
}