-
-
Notifications
You must be signed in to change notification settings - Fork 5.2k
2.5 Validation API changes #4233
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
Changes from all commits
042dcf9
f4380ed
5dfe499
70c5ca1
e658b56
280440e
279d8d6
f97ba7a
94fc520
9874d8e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -65,22 +65,34 @@ The validator class is also simple, and only has one required method ``validate( | |
public function validate($value, Constraint $constraint) | ||
{ | ||
if (!preg_match('/^[a-zA-Za0-9]+$/', $value, $matches)) { | ||
// If you're using the new 2.5 validation API (you probably are!) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we also have to add a comment about the 2.5 BC API? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hmm, I don't think so. If you're using 2.5 BC API, then the 2.5 validation API is available to you and you should be using it. I think the fact that you also have the ability to use the older API is a detail that they don't need to care about (that's just there so their old code doesn't break). |
||
$this->context->buildViolation($constraint->message) | ||
->setParameter('%string%', $value) | ||
->addViolation(); | ||
); | ||
|
||
// If you're using the old 2.4 validation API | ||
/* | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I prefer to either use either single line or multi line comments, not both: // If you're using the old 2.4 validation API
// $this->context->addValidation(
// ...
// ); /* If you're using the old 2.4 validation API
$this->context->addViolation(
...
);
*/ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I started to make this change, but I think it actually looked worse. The first line is a one-line comment, which you can keep even if you commented out the next block of code. |
||
$this->context->addViolation( | ||
$constraint->message, | ||
array('%string%' => $value) | ||
); | ||
*/ | ||
} | ||
} | ||
} | ||
|
||
.. note:: | ||
|
||
The ``validate`` method does not return a value; instead, it adds violations | ||
to the validator's ``context`` property with an ``addViolation`` method | ||
call if there are validation failures. Therefore, a value could be considered | ||
as being valid if it causes no violations to be added to the context. | ||
The first parameter of the ``addViolation`` call is the error message to | ||
use for that violation. | ||
Inside ``validate``, you don't need to return a value. Instead, you add violations | ||
to the validator's ``context`` property and a value will be considered valid | ||
if it causes no violations. The ``buildViolation`` method takes the error | ||
message as its argument and returns an instance of | ||
:class:`Symfony\\Component\\Validator\\Violation\\ConstraintViolationBuilderInterface`. | ||
The ``addViolation`` method call finally adds the violation to the context. | ||
|
||
.. versionadded:: 2.5 | ||
The ``buildViolation`` method was added in Symfony 2.5. For usage examples | ||
with older Symfony versions, see the corresponding versions of this documentation | ||
page. | ||
|
||
Using the new Validator | ||
----------------------- | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would add a use statement for this class. (and for all 3 classes used in this example actually)