From 3db1b10efdd015b963d5bd87a8659a0e6d25e728 Mon Sep 17 00:00:00 2001 From: Daniel Wehner Date: Sun, 26 Jan 2014 17:20:56 +0100 Subject: [PATCH] allow the TextAreaFormField to be used with valid/invalid HTML --- .../DomCrawler/Field/TextareaFormField.php | 2 +- .../Tests/Field/TextareaFormFieldTest.php | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/DomCrawler/Field/TextareaFormField.php b/src/Symfony/Component/DomCrawler/Field/TextareaFormField.php index 794e966ac6..987b78b5c7 100644 --- a/src/Symfony/Component/DomCrawler/Field/TextareaFormField.php +++ b/src/Symfony/Component/DomCrawler/Field/TextareaFormField.php @@ -33,7 +33,7 @@ class TextareaFormField extends FormField $this->value = null; foreach ($this->node->childNodes as $node) { - $this->value .= $this->document->saveXML($node); + $this->value .= $node->wholeText; } } } diff --git a/src/Symfony/Component/DomCrawler/Tests/Field/TextareaFormFieldTest.php b/src/Symfony/Component/DomCrawler/Tests/Field/TextareaFormFieldTest.php index a33c44f230..5df2e77b81 100644 --- a/src/Symfony/Component/DomCrawler/Tests/Field/TextareaFormFieldTest.php +++ b/src/Symfony/Component/DomCrawler/Tests/Field/TextareaFormFieldTest.php @@ -29,5 +29,19 @@ class TextareaFormFieldTest extends FormFieldTestCase } catch (\LogicException $e) { $this->assertTrue(true, '->initialize() throws a \LogicException if the node is not a textarea'); } + + // Ensure that valid HTML can be used on a textarea. + $node = $this->createNode('textarea', 'foo bar

Baz

'); + $field = new TextareaFormField($node); + + $this->assertEquals('foo bar

Baz

', $field->getValue(), '->initialize() sets the value of the field to the textarea node value'); + + // Ensure that we don't do any DOM manipulation/validation by passing in + // "invalid" HTML. + $node = $this->createNode('textarea', 'foo bar

Baz

'); + $field = new TextareaFormField($node); + + $this->assertEquals('foo bar

Baz

', $field->getValue(), '->initialize() sets the value of the field to the textarea node value'); } + }