diff --git a/src/Symfony/Component/Form/Extension/Core/EventListener/FixUrlProtocolListener.php b/src/Symfony/Component/Form/Extension/Core/EventListener/FixUrlProtocolListener.php index c18ca8a8b4..9e7761705e 100644 --- a/src/Symfony/Component/Form/Extension/Core/EventListener/FixUrlProtocolListener.php +++ b/src/Symfony/Component/Form/Extension/Core/EventListener/FixUrlProtocolListener.php @@ -36,7 +36,7 @@ class FixUrlProtocolListener implements EventSubscriberInterface { $data = $event->getData(); - if ($this->defaultProtocol && $data && !preg_match('~^[\w+.-]+://~', $data)) { + if ($this->defaultProtocol && $data && is_string($data) && !preg_match('~^[\w+.-]+://~', $data)) { $event->setData($this->defaultProtocol.'://'.$data); } } diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/Type/UrlTypeTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/Type/UrlTypeTest.php index 2b4783e4d3..2be6b520d7 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/Type/UrlTypeTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/Type/UrlTypeTest.php @@ -82,4 +82,12 @@ class UrlTypeTest extends TextTypeTest 'default_protocol' => array(), )); } + + public function testSubmitWithNonStringDataDoesNotBreakTheFixUrlProtocolListener() + { + $form = $this->factory->create(static::TESTED_TYPE); + $form->submit(array('domain.com', 'www.domain.com')); + + $this->assertSame(array('domain.com', 'www.domain.com'), $form->getData()); + } }