-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
[Validator] Add option to allow ANY protocol in Assert\Url constraint #60561
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
base: 7.4
Are you sure you want to change the base?
[Validator] Add option to allow ANY protocol in Assert\Url constraint #60561
Conversation
Hey! I see that this is your first PR. That is great! Welcome! Symfony has a contribution guide which I suggest you to read. In short:
Review the GitHub status checks of your pull request and try to solve the reported issues. If some tests are failing, try to see if they are failing because of this change. When two Symfony core team members approve this change, it will be merged and you will become an official Symfony contributor! I am going to sit back now and wait for the reviews. Cheers! Carsonbot |
2ea4167
to
879bdc3
Compare
@@ -36,6 +37,7 @@ class Url extends Constraint | |||
public array $protocols = ['http', 'https']; | |||
public bool $relativeProtocol = false; | |||
public bool $requireTld = false; | |||
public bool $allowAnyProtocol = false; |
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.
instead of adding a new option, what about using protocols: []
as a special case for this? or maybe ['*']
?
@@ -68,12 +71,21 @@ public function __construct( | |||
trigger_deprecation('symfony/validator', '7.1', 'Not passing a value for the "requireTld" option to the Url constraint is deprecated. Its default value will change to "true".'); | |||
} | |||
|
|||
if ($this->allowAnyProtocol && $this->relativeProtocol) { |
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 don't see why both options should conflict. Let remove this limitation, isn't it?
@@ -73,8 +74,14 @@ public function validate(mixed $value, Constraint $constraint): void | |||
$value = ($constraint->normalizer)($value); | |||
} | |||
|
|||
$pattern = $constraint->relativeProtocol ? str_replace('(%s):', '(?:(%s):)?', static::PATTERN) : static::PATTERN; | |||
$pattern = \sprintf($pattern, implode('|', $constraint->protocols)); |
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.
looks like protocols accepts regex patterns? in this case this PR is not needed as protocols: ['.*?']
should do it, isn't it? let's document that instead?
Uh oh!
There was an error while loading. Please reload this page.