Skip to content

Commit

Permalink
merged branch Burgov/enhance_form_error_message (PR symfony#4557)
Browse files Browse the repository at this point in the history
Commits
-------

b5cf337 [Form] Enhanced the form error message

Discussion
----------

[Form] Enhanced the form error message

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes

The error message on type mismatch is a bit obscure:

The form's view data is expected to be an instance of class Samson\Bundle\TRSBundle\Entity\Labour, but has the type object. You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms object to Samson\Bundle\TRSBundle\Entity\Labour.

This commit changes it to:

The form's view data is expected to be an instance of class Samson\Bundle\TRSBundle\Entity\Labour, but is an instance of class Closure. You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms an instance of Closure to an instance of class Samson\Bundle\TRSBundle\Entity\Labour.

---------------------------------------------------------------------------

by travisbot at 2012-06-12T14:04:08Z

This pull request [fails](http://travis-ci.org/symfony/symfony/builds/1601478) (merged 70a15df6 into 7783969).

---------------------------------------------------------------------------

by travisbot at 2012-06-12T14:06:31Z

This pull request [fails](http://travis-ci.org/symfony/symfony/builds/1601507) (merged 12ec4dbd into 7783969).

---------------------------------------------------------------------------

by travisbot at 2012-06-12T14:13:09Z

This pull request [passes](http://travis-ci.org/symfony/symfony/builds/1601517) (merged b5cf337 into 7783969).

---------------------------------------------------------------------------

by bschussek at 2012-06-12T18:21:31Z

:+1: Thanks!
  • Loading branch information
fabpot committed Jun 12, 2012
2 parents ba8333a + b5cf337 commit 37550d2
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions src/Symfony/Component/Form/Form.php
Original file line number Diff line number Diff line change
Expand Up @@ -348,25 +348,27 @@ public function setData($modelData)
if (!empty($viewData)) {
$dataClass = $this->config->getDataClass();

$actualType = is_object($viewData) ? 'an instance of class ' . get_class($viewData) : ' a(n) ' . gettype($viewData);

if (null === $dataClass && is_object($viewData) && !$viewData instanceof \ArrayAccess) {
$expectedType = 'scalar, array or an instance of \ArrayAccess';

throw new FormException(
'The form\'s view data is expected to be of type ' . $expectedType . ', ' .
'but is an instance of class ' . get_class($viewData) . '. You ' .
'but is ' . $actualType . '. You ' .
'can avoid this error by setting the "data_class" option to ' .
'"' . get_class($viewData) . '" or by adding a view transformer ' .
'that transforms ' . get_class($viewData) . ' to ' . $expectedType . '.'
'that transforms ' . $actualType . ' to ' . $expectedType . '.'
);
}

if (null !== $dataClass && !$viewData instanceof $dataClass) {
throw new FormException(
'The form\'s view data is expected to be an instance of class ' .
$dataClass . ', but has the type ' . gettype($viewData) . '. You ' .
'can avoid this error by setting the "data_class" option to ' .
'null or by adding a view transformer that transforms ' .
gettype($viewData) . ' to ' . $dataClass . '.'
$dataClass . ', but is '. $actualType . '. You can avoid this error ' .
'by setting the "data_class" option to null or by adding a view ' .
'transformer that transforms ' . $actualType . ' to an instance of ' .
$dataClass . '.'
);
}
}
Expand Down

0 comments on commit 37550d2

Please sign in to comment.