Skip to content

[Form] The trace of form errors is now displayed in the profiler #12054

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 30, 2014

Conversation

webmozart
Copy link
Contributor

Q A
Bug fix? no
New feature? yes
BC breaks? yes
Deprecations? no
Tests pass? yes
Fixed tickets #5607
License MIT
Doc PR -

This is a follow-up PR for #12052. With this change, the full trace of form errors is now displayed in the web debugger:

error

If a violation was caused by a TransformationFailedException, the exception is now accessible through the getCause() method of the violation. Additionally, you can access Form::getTransformationFailure() to retrieve the exception.

@@ -14,6 +14,8 @@ CHANGELOG
* deprecated `ClassMetadata::addMemberMetadata()`
* [BC BREAK] added `Mapping\MetadataInterface::getConstraints()`
* added generic "payload" option to all constraints for attaching domain-specific data
* [BC BREAK] added `ConstraintViolationBuilderInterface::setCause()`
* [
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this looks weird

@stof
Copy link
Member

stof commented Sep 26, 2014

getTransformationFailure must be implemented in Button too

@webmozart webmozart force-pushed the transformation-failure branch from cfe490d to ae6c88d Compare September 26, 2014 13:24
@webmozart
Copy link
Contributor Author

@stof done

@shoomyth
Copy link

What do you think about deprecating isSynchronized() and adding hasTransformationFailure() ?
Or renaming to isDataSynchronized(), because it's not obvious what is exactly synchronized in form

@webmozart
Copy link
Contributor Author

@shoomyth hasTransformationFailure() is a good suggestion actually! I'll look into it.

@webmozart
Copy link
Contributor Author

ping @symfony/deciders

I'd like to merge this PR today.

@fabpot
Copy link
Member

fabpot commented Sep 30, 2014

My only concern is the "yet another BC break in the Form component". I think that having interfaces that change in every single Symfony version do not help. Not having those interfaces in the first place would be in fact better.

@stof
Copy link
Member

stof commented Sep 30, 2014

@fabpot we have 2 implementations of the interface in core. And removing it would force breaking BC in all form types (as they typehint the FormInterface in buildView and finishView).
If we can find a different way to handle buttons without relying on the interface, I would be in favor of dropping it in 3.0 though.

But the interface is meant for consuming it in userland, not for implementing it. I doubt anyone is crazy enough to reimplement the FormInterface in a different way in their project, and only these crazy people would be affected by this BC break.

@webmozart
Copy link
Contributor Author

But the interface is meant for consuming it in userland, not for implementing it.

Exactly. People are supposed to type-hint against the interface, not implement it. Our benefit is the flexibility to pass any implementation of the interface that we like, be it Form, Button or any other (some more will probably come in 2.7, because I think we can improve performance if we use simpler implementations than Form for simple fields).

@webmozart webmozart force-pushed the transformation-failure branch 2 times, most recently from 81b4121 to cd4b3f8 Compare September 30, 2014 21:05
webmozart added a commit that referenced this pull request Sep 30, 2014
…onstraint violation (webmozart)

This PR was merged into the 2.6-dev branch.

Discussion
----------

[Validator] Made it possible to store the cause of a constraint violation

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | yes
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | TODO

This change makes it possible to store the cause of a violation (e.g. an exception). This way it is possible to follow the trace of violations caused by exceptions up to their root.

```php
try {
    // ...
} catch (Exception $e) {
    $this->context->buildViolation('Error!')
        ->setCause($e)
        ->addViolation();
}
```

This is one step to solve #5607. See #12054.

Commits
-------

499eeb4 [Validator] Made it possible to store the cause of a constraint violation
@webmozart webmozart force-pushed the transformation-failure branch from cd4b3f8 to 8dbe258 Compare September 30, 2014 21:09
@webmozart webmozart merged commit 8dbe258 into symfony:master Sep 30, 2014
webmozart added a commit that referenced this pull request Sep 30, 2014
…e profiler (webmozart)

This PR was merged into the 2.6-dev branch.

Discussion
----------

[Form] The trace of form errors is now displayed in the profiler

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | yes
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #5607
| License       | MIT
| Doc PR        | -

This is a follow-up PR for #12052. With this change, the full trace of form errors is now displayed in the web debugger:

![error](https://cloud.githubusercontent.com/assets/176399/4419637/85facd14-456d-11e4-8c70-0e8802a586ec.png)

If a violation was caused by a TransformationFailedException, the exception is now accessible through the `getCause()` method of the violation. Additionally, you can access `Form::getTransformationFailure()` to retrieve the exception.

Commits
-------

8dbe258 [Form] The trace of form errors is now displayed in the profiler
@webmozart webmozart deleted the transformation-failure branch October 22, 2014 17:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants