Issue #3427737 by longwave, godotislate: Overwrite Symfony constraint properties in constructors instead of child properties

(cherry picked from commit f0071e2477)
merge-requests/6741/merge
catch 2024-03-14 21:30:16 +00:00
parent d3a13779f9
commit 574dfdc3e2
7 changed files with 35 additions and 27 deletions

View File

@ -27,10 +27,6 @@
# testing using \Symfony\Component\ErrorHandler\DebugClassLoader.
%The "Twig\\Environment::getTemplateClass\(\)" method is considered internal\. It may change without further notice\. You should not extend it from "Drupal\\Core\\Template\\TwigEnvironment"\.%
# Skip deprecations warning for overriding Symfony properties in validation
# constraints. See https://www.drupal.org/project/drupal/issues/3425150.
%The "Symfony\\Component\\Validator\\Constraints\\[^"]+::\$[^"]+" property is considered final. You should not override it in "[^"]+"%
# Drupal 11.
%Drupal\\Core\\Form\\FormBuilder::getForm\(\).* will require a new "mixed \.\.\. \$args" argument in the next major version of its interface%
%Drupal\\Core\\Form\\FormBuilder::submitForm\(\).* will require a new "mixed \.\.\. \$args" argument in the next major version of its interface%

View File

@ -17,8 +17,14 @@ use Symfony\Component\Validator\Constraints\Choice;
)]
class AllowedValuesConstraint extends Choice {
public $strict = TRUE;
public $minMessage = 'You must select at least %limit choice.|You must select at least %limit choices.';
public $maxMessage = 'You must select at most %limit choice.|You must select at most %limit choices.';
/**
* {@inheritdoc}
*/
public function __construct(...$args) {
$this->strict = TRUE;
$this->minMessage = 'You must select at least %limit choice.|You must select at least %limit choices.';
$this->maxMessage = 'You must select at most %limit choice.|You must select at most %limit choices.';
parent::__construct(...$args);
}
}

View File

@ -18,9 +18,15 @@ use Symfony\Component\Validator\Constraints\Count;
)]
class CountConstraint extends Count {
public $minMessage = 'This collection should contain %limit element or more.|This collection should contain %limit elements or more.';
public $maxMessage = 'This collection should contain %limit element or less.|This collection should contain %limit elements or less.';
public $exactMessage = 'This collection should contain exactly %limit element.|This collection should contain exactly %limit elements.';
/**
* {@inheritdoc}
*/
public function __construct(...$args) {
$this->minMessage = 'This collection should contain %limit element or more.|This collection should contain %limit elements or more.';
$this->maxMessage = 'This collection should contain %limit element or less.|This collection should contain %limit elements or less.';
$this->exactMessage = 'This collection should contain exactly %limit element.|This collection should contain exactly %limit elements.';
parent::__construct(...$args);
}
/**
* {@inheritdoc}

View File

@ -20,9 +20,9 @@ class EmailConstraint extends Email {
/**
* {@inheritdoc}
*/
public function __construct($options = []) {
$options += ['mode' => 'strict'];
parent::__construct($options);
public function __construct(...$args) {
$this->mode = static::VALIDATION_MODE_STRICT;
parent::__construct(...$args);
}
/**

View File

@ -20,9 +20,15 @@ use Symfony\Component\Validator\Constraints\Length;
)]
class LengthConstraint extends Length {
public $maxMessage = 'This value is too long. It should have %limit character or less.|This value is too long. It should have %limit characters or less.';
public $minMessage = 'This value is too short. It should have %limit character or more.|This value is too short. It should have %limit characters or more.';
public $exactMessage = 'This value should have exactly %limit character.|This value should have exactly %limit characters.';
/**
* {@inheritdoc}
*/
public function __construct(...$args) {
$this->maxMessage = 'This value is too long. It should have %limit character or less.|This value is too long. It should have %limit characters or less.';
$this->minMessage = 'This value is too short. It should have %limit character or more.|This value is too short. It should have %limit characters or more.';
$this->exactMessage = 'This value should have exactly %limit character.|This value should have exactly %limit characters.';
parent::__construct(...$args);
}
/**
* {@inheritdoc}

View File

@ -23,15 +23,11 @@ class RangeConstraint extends Range {
/**
* {@inheritdoc}
*/
public function __construct(array $options = NULL) {
if (isset($options['min']) && isset($options['max'])) {
$options['notInRangeMessage'] = $options['notInRangeMessage'] ?? 'This value should be between %min and %max.';
}
else {
$options['minMessage'] = $options['minMessage'] ?? 'This value should be %limit or more.';
$options['maxMessage'] = $options['maxMessage'] ?? 'This value should be %limit or less.';
}
parent::__construct($options);
public function __construct(...$args) {
$this->notInRangeMessage = 'This value should be between %min and %max.';
$this->minMessage = 'This value should be %limit or more.';
$this->maxMessage = 'This value should be %limit or less.';
parent::__construct(...$args);
}
}

View File

@ -17,8 +17,6 @@ use Symfony\Component\Validator\Constraints\Regex;
)]
class RegexConstraint extends Regex {
public $message = 'This value is not valid.';
/**
* {@inheritdoc}
*