Goutte с поведением: строка xml, поскольку значение textarea заполняется объектами html

У меня есть страница, содержащая форму с некоторыми элементами ввода, включая текстовое поле. Эти поля ввода заполняются некоторыми значениями. Думайте обо всей этой странице как о странице редактирования для некоторой сущности. Textarea содержит строку XML, которая правильно отображается в обычном браузере (например, firefox и chrome) и выглядит следующим образом:

<front>

  <!-- top row -->
    <cell>
      <page>8</page>
    </cell>

</front>

Но когда я запускаю тестовый пример с драйвером goutte mink, страница загружается, а значение textarea кодируется специальными символами, например:

&lt;front&gt;&#13;
&#13;
    &lt;!-- top row --&gt;&#13;
        &lt;cell&gt;&#13;
            &lt;page&gt;8&lt;/page&gt;&#13;
        &lt;/cell&gt;&#13;
&#13;
&lt;/front&gt;&#13;

И когда я нажимаю кнопку отправки, этот беспорядок отправляется на сервер и сохраняется вместо исходного правильного xml. Обратите внимание, что я вообще не трогаю его. Я могу просто загрузить страницу и нажать кнопку отправки, и все облажается. Это происходит только с подагрой, но не с, скажем, с селеном2.

Итак, вопрос в том: как я могу заставить goutte автоматически интерпретировать эти HTML-объекты и отправлять их как правильные данные, а не закодированный беспорядок?


person Eduard Sukharev    schedule 24.09.2013    source источник


Ответы (1)


для этого нет решения. Это кажется нормальным поведением Goutte/Guzzle. В качестве обходного пути мы пришли к следующему решению: в случае использования драйвера Goutte мы проверяем содержимое страницы для всех элементов <textarea>, и если они найдены, то для каждого мы получаем их содержимое и просто повторно вставляем следующим образом:

$elements = $this->pageContent->findAll('xpath', '//textarea');
foreach ($elements as $element) {
    $element->setValue($element->getText());
}
person Eduard Sukharev    schedule 15.10.2013