tentwofour / sf2-form
为 Symfony2 表单提供数据转换器
1.2.1
2021-02-25 21:45 UTC
Requires
- php: ^7.0
- symfony/form: ^3.0|^4.0
- tentwofour/formatter: ^1.1
Requires (Dev)
- phpunit/phpunit: ^6.0
README
Symfony2 表单扩展
数据转换器
PhoneNumberViewTransformer
将电话号码从人类格式(例如:+1 (123) 555-5555)转换为数据库格式(例如:+11235555555)的值。数据库字段(MySQL)的 varchar(15) 足够存储电话号码
转换
$pn = '+111234567890'; $f = new PhoneNumberViewTransformer(); $formatted = $f->transform($pn); echo $formatted; // Outputs: '+11 (123) 456-7890'
反向转换
$pn = '+(11) 123-456-7890'; $f = new PhoneNumberViewTransformer(); $formatted = $f->reverseTransform($pn); echo $formatted; // Outputs: '+111234567890';
与 Symfony2 表单一起使用
// src/AppBundle/Form/ProfileType.php use Symfony\Component\Form\AbstractType; use Ten24\Component\Form\Extension\DataTransformer; class ProfileType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $transformer = new PhoneNumberViewTransformer(); // Optionally change the display format, see PhoneNumberFormatter for all possible values // $transformer->setDisplayFormat(PhoneNumberFormtter::FORMAT_DOTTED) $builder->add($builder ->create('phoneNumber1', null, [ 'required' => true, 'attr' => [ 'placeholder' => 'eg. 1.123.456.7890 or 1 (123) 456-7890' ] ]) ->addViewTransformer($transformer) ); // ... }
PostalCodeViewTransformer
将邮政编码从人类格式(例如:S4T 3P9)转换为数据库格式(例如:S4T3P9)的值。数据库字段(MySQL)的 varchar(15) 足够存储邮政编码(北美)
仅支持北美邮政编码。
转换
$postalCode = 'S4p0H0'; $formatter = new PostalCodeViewTransformer(); $formatted = $formatter->transform($postalCode); echo $formatted; // Outputs: 'S4P 0H0'
反向转换
$postalCode = 'S4p 0H0 '; $formatter = new PostalCodeViewTransformer(); $formatted = $formatter->reverseTransform($postalCode); echo $formatted; // Outputs: 'S4P0H0'
与 Symfony2 表单一起使用
// src/AppBundle/Form/ProfileType.php use Symfony\Component\Form\AbstractType; use Ten24\Component\Form\Extension\DataTransformer; class ProfileType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $transformer = new PostalCodeViewTransformer(); $builder->add($builder ->create('postalCode', null, [ 'required' => true, ]) ->addViewTransformer($transformer) ); // ... }