-
-
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 ['*']
?
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've deleted the new option and used the ['*'] I feel that it's more explicit this way
@@ -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?
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 have deleted this limitation we should be able to use both options
@@ -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?
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.
Done
Uh oh!
There was an error while loading. Please reload this page.