2015-12-04 7 views
2

Я использовал Yii2 DynamicForms extension создавать динамические поля без проблем, но сегодня, когда я запускаю обновление композитора я получаю следующее сообщение об ошибке:Вызова неопределенного метод Symfony Component DomCrawler Crawler :: перемотка назад()

Call to undefined method Symfony\Component\DomCrawler\Crawler::rewind()

ошибка указывает на линии 201 /vendor/wbraganca/yii2-dynamicform/DynamicFormWidget.php:

private function removeItems($content) 
{ 
    $document = new \DOMDocument('1.0', \Yii::$app->charset); 
    $crawler = new Crawler(); 
    $crawler->addHTMLContent($content, \Yii::$app->charset); 
    $root = $document->appendChild($document->createElement('_root')); 
    $crawler->rewind(); // Error here 
    $root->appendChild($document->importNode($crawler->current(), true)); 
    $domxpath = new \DOMXPath($document); 
    $crawlerInverse = $domxpath->query(CssSelector::toXPath($this->widgetItem)); 

    foreach ($crawlerInverse as $elementToRemove) { 
     $parent = $elementToRemove->parentNode; 
     $parent->removeChild($elementToRemove); 
    } 

    $crawler->clear(); 
    $crawler->add($document); 
    return $crawler->filter('body')->eq(0)->html(); 
} 

Этот метод был удален из DomCrawler?
Как это решить?

+0

Почему не вы подаете ошибку в связке? –

+0

Привет. Поскольку создатель больше не поддерживает расширение. – jflizandro

+0

У вас есть что-то еще. Crawler - это компонент Symfony, о чем свидетельствует ваше сообщение об ошибке. Crawler расширяет SplObjectStorage, который реализует метод перемотки. Какую версию Symfony 2 вы обновляете? Возможно, проверьте поставщика/symfony /.../ Crawler, чтобы быть уверенным, что ничего загадочного не произошло. Полагаю, вы могли бы даже проверить расширение на всякий случай, если автор сделал что-то действительно сумасшедшее, как полностью заменить искателя. Но все это кажется довольно странным. – Cerad

ответ

2

Альтернативное решение - вернуть DomCrawler к версии 2.8.

{ 
    "symfony/dom-crawler": "2.8", 
    "symfony/css-selector": "2.8", 
    "wbraganca/yii2-dynamicform": "2.0.1" 
} 

Взято из: https://github.com/wbraganca/yii2-dynamicform/issues/108

+0

Где этот код необходимо вставить? Даже им приходится сталкиваться с такой же проблемой. –