Comments (5)
Could you share an example form where you're trying to do this? (And where you're wanting the message to appear?)
from phone-number-bundle.
We have following Form:
CreateAdvertType with field 'contact'
$builder->add('contact', new ContactType(), array(
...ContactType with field 'phone'
$builder->add('phone', new PhoneType(), array(
...PhoneType with field 'phone_number' and 'country_code'. We put this two input-values together to one String with DataTransformer. So our 'phone' field in 'ContactType' has (after DataTransforming) a string value e.g. "+49 821 635449"
in our validation.yml:
contact:
- Collection:
groups: [x,y]
fields:
phone:
- NotBlank: { groups: [x,y], message: 'advert.phone_blank' }
- Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber: { groups: [x,y], message: 'advert.phone_invalid' }
so the 'phone' that contains (after DataTransforming) a string e.g. "+49 821 635449" will be validated. Because 'phone' is a Collection (and not a form field) the violation message won´t be automatically binded to 'phone'. Instead we want force the violation message to appear under the 'phone_number' form field.
To do this, we have to use this line of code:
$this->context->addViolationAt('[phone_number]', $constraint->message);
instead of
https://github.com/misd-service-development/phone-number-bundle/blob/master/Validator/Constraints/PhoneNumberValidator.php#L98
For this we make our own 'PhoneIsValidValidator' (and use it in validation.yml) that extends Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumberValidator and just overwrite your 'addViolation' wrapper-method. But this method is private so we cant overwrite it. For Testing we changed this in your code to protected and everything works fine and as expected.
So it would be nice when you let this method be overwritten so the validator would be more flexible
from phone-number-bundle.
I see, so you've basically created a different widget for input.
Can I ask why you've done this? Is it so you can control the countries that it accepts? (If so see #14.) Or just to change the way the form is displayed?
Extending the constraints isn't really something that should be done (since it should be unnecessary). Instead, the bundle should allow restricting the list of countries (#14) and possibly also allow single_text
and country_choice
widget options (not sure about the best name for the latter). That should cover what I think you're trying to do!
from phone-number-bundle.
Yes, we use a different widget for input.
Our main goal with that is not to restrict specific country_codes. The thing because we split the 'phone' field in to 'country_code' and 'phone_number' is that we dont want every user of our application to know his country_code (we think the most dont know it). Instead we make the 'phone_number' a text-field and 'country_code' field a select-box where the user can easily choose his country_code. The options of this select-box will be set in our config.yml and look like this: e.g. "(AT) +43" or "(DE) +49". The side effect of this is that we can also control the country_codes that we accept, but is not our main goal with this.
Simply said:
we just want a select-box where users can choose a country_code (e.g. value="+49"), and a text-field where the user can type in his phone_number(e.g. "821 85496"). This two values should be then put together to one string (e.g. "+49 821 85496"). This string we want to validate over your Validation. (until this point everything works like we want). If string is invalid, we want the violation message to apper directly under the text-field, where the user types in his phone_number.
Currently it adds the violation message to form_errors(form) and not to the field.
from phone-number-bundle.
very nice! thx
from phone-number-bundle.
Related Issues (20)
- Exception on form rendering when using Synfony 4 build-in Bootstrap 4 form support HOT 3
- PhoneNumberType is overriding template for Symfony TelType HOT 1
- Extensions Are Silently Dropped HOT 4
- Missing phone_number_parse Twig filter
- JMS Serializer: return empty phoneNumber: [] HOT 3
- Support `default_region` for `PhoneNumberType` with option `'widget' => PhoneNumberType::WIDGET_COUNTRY_CHOICE`
- Pulling in misd/phone-number-bundle with composer is causing memory limit to be exhausted
- How to deal with numbers saved before phone-number-bundle implementation?
- Country choice custom text
- My form submission is always invalid HOT 3
- Missing require in composer HOT 2
- New release HOT 4
- Symfony templating component required HOT 2
- PhoneNumberValidatorTest fails on CI HOT 1
- Deprecations from Twig
- Allow multiple type HOT 2
- Add support for symfony 4.4 HOT 3
- Abandoned in favour of `odolbeau/phone-number-bundle` HOT 8
- Regular Expression Issue for Iranian Mobile
- Is this bundle abandoned? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from phone-number-bundle.