Integrates libphonenumber into your Symfony application

Overview

PhoneNumberBundle

Build Status Latest stable version License

SWUbanner

This bundle is a fork of misd-service-development/phone-number-bundle. As this project doesn't look maintained anymore, we decided to create & maintain a fork.

This bundle integrates Google's libphonenumber into your Symfony application through the giggsey/libphonenumber-for-php port.

Installation

  1. Use Composer to download the PhoneNumberBundle:
$ composer require odolbeau/phone-number-bundle

if you're using Symfony Flex, that's all you have to do! Otherwise:

  1. Register the bundle in your application:
// app/AppKernel.php

public function registerBundles()
{
    $bundles = [
        // ...
        new Misd\PhoneNumberBundle\MisdPhoneNumberBundle()
    ];
}

Update from misd/phone-number-bundle

The update from misd/phone-number-bundle to odolbeau/phone-number-bundle should be really easy.

Update your composer.json:

-        "misd/phone-number-bundle": "^1.3",
+        "odolbeau/phone-number-bundle": "^3.0",

Then run composer update misd/phone-number-bundle odolbeau/phone-number-bundle.

If you're using a container parameter or alias defined by misd/phone-number-bundle you can use "odolbeau/phone-number-bundle": "^2.0" until your project is cleaned.

Usage

Services

The following services are available:

Service ID (Removed in 3.0) libphonenumber version
libphonenumber\PhoneNumberUtil libphonenumber.phone_number_util
libphonenumber\geocoding\PhoneNumberOfflineGeocoder libphonenumber.phone_number_offline_geocoder >=5.8.8
libphonenumber\ShortNumberInfo libphonenumber.short_number_info >=5.8
libphonenumber\PhoneNumberToCarrierMapper libphonenumber.phone_number_to_carrier_mapper >=5.8.8
libphonenumber\PhoneNumberToTimeZonesMapper libphonenumber.phone_number_to_time_zones_mapper >=5.8.8

To parse a string into a libphonenumber\PhoneNumber object, inject the service and:

    $phoneNumber = $this->phoneNumberUtil->parse($string, PhoneNumberUtil::UNKNOWN_REGION);

Doctrine mapping

Requires doctrine/doctrine-bundle.

To persist libphonenumber\PhoneNumber objects, add the Misd\PhoneNumberBundle\Doctrine\DBAL\Types\PhoneNumberType mapping to your application's config:

// app/config.yml

doctrine:
    dbal:
        types:
            phone_number: Misd\PhoneNumberBundle\Doctrine\DBAL\Types\PhoneNumberType

You can then use the phone_number mapping:

/**
 * @ORM\Column(type="phone_number")
 */
private $phoneNumber;

This creates a varchar(35) column with a Doctrine mapping comment.

Note that if you're putting the phone_number type on an already-existing schema the current values must be converted to the libphonenumber\PhoneNumberFormat::E164 format.

Twig Templating

If any of the form_div_layout, bootstrap_3_*, bootstrap_4_* or bootstrap_5_* layouts are registered in your twig configuration, the bundle will automatically register the template used to render the Misd\PhoneNumberBundle\Form\Type form type.

phone_number_format

The phone_number_format filter can be used to format a phone number object. A libphonenumber\PhoneNumberFormat constant can be passed as argument to specify in which format the number should be printed.

For example, to format an object called myPhoneNumber in the libphonenumber\PhoneNumberFormat::NATIONAL format:

{{ myPhoneNumber|phone_number_format('NATIONAL') }}

By default phone numbers are formatted in the libphonenumber\PhoneNumberFormat::INTERNATIONAL format.

phone_number_of_type

The phone_number_of_type test can be used to check a phone number against a type: A libphonenumber\PhoneNumberType constant name must be passed to specify to which type a number has to match.

For example, to check if an object called myPhoneNumber is a libphonenumber\PhoneNumberType::MOBILE type:

{% if myPhoneNumber is phone_number_of_type('MOBILE') }} %} ... {% endif %}

Using libphonenumber\PhoneNumber objects in forms

You can use the PhoneNumberType (phone_number for Symfony 2.7) form type to create phone number fields. There are two widgets available.

Single text field

A single text field allows the user to type in the complete phone number. When an international prefix is not entered, the number is assumed to be part of the set default_region. For example:

use libphonenumber\PhoneNumberFormat;
use Misd\PhoneNumberBundle\Form\Type\PhoneNumberType;
use Symfony\Component\Form\FormBuilderInterface;

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('phoneNumber', PhoneNumberType::class, array('default_region' => 'GB', 'format' => PhoneNumberFormat::NATIONAL));
}

By default the default_region and format options are PhoneNumberUtil::UNKNOWN_REGION and PhoneNumberFormat::INTERNATIONAL respectively.

Country choice fields

The phone number can be split into a country choice and phone number text fields. This allows the user to choose the relevant country (from a customisable list) and type in the phone number without international dialling.

use libphonenumber\PhoneNumberFormat;
use Misd\PhoneNumberBundle\Form\Type\PhoneNumberType;
use Symfony\Component\Form\FormBuilderInterface;

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('phoneNumber', PhoneNumberType::class, array('widget' => PhoneNumberType::WIDGET_COUNTRY_CHOICE, 'country_choices' => array('GB', 'JE', 'FR', 'US'), 'preferred_country_choices' => array('GB', 'JE')));
}

This produces the preferred choices of 'Jersey' and 'United Kingdom', and regular choices of 'France' and 'United States'.

By default the country_choices is empty, which means all countries are included, as is preferred_country_choices. The option country_placeholder can be specified to create a placeholder option on above the whole list.

Validating phone numbers

ℹ️ Using a Symfony or PHP version that does not support attributes? This bundle also supports validation as annotation. Take a look at the old documentation.

You can use the Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber constraint to make sure that either a libphonenumber\PhoneNumber object or a plain string is a valid phone number. For example:

use Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber as AssertPhoneNumber;

 #[AssertPhoneNumber()]
private $phoneNumber;

You can set the default region through the defaultRegion property:

use Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber as AssertPhoneNumber;

 #[AssertPhoneNumber(defaultRegion: 'GB')]
private $phoneNumber;

You can also set default region in the bundle config:

misd_phone_number:
    validator:
        default_region: GB

You can also define a region dynamically according to the context of the validated object thanks to the "regionPath" property (here according to the user's region):

use Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber as AssertPhoneNumber;

#[AssertPhoneNumber(regionPath: 'countryCode')]
private $phoneNumber;

private $countryCode;

public function getCountryCode()
{
    return $this->countryCode;
}

By default any valid phone number will be accepted. You can restrict the type through the type property, recognised values:

  • Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber::ANY (default)
  • Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber::FIXED_LINE
  • Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber::MOBILE
  • Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber::PAGER
  • Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber::PERSONAL_NUMBER
  • Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber::PREMIUM_RATE
  • Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber::SHARED_COST
  • Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber::TOLL_FREE
  • Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber::UAN
  • Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber::VOIP
  • Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber::VOICEMAIL

(Note that libphonenumber cannot always distinguish between mobile and fixed-line numbers (eg in the USA), in which case it will be accepted.)

#[AssertPhoneNumber(type: [PhoneNumber::MOBILE])]
private $mobilePhoneNumber;

#[AssertPhoneNumber(type: [PhoneNumber::FIXED_LINE, PhoneNumber::VOIP])]
private $fixedOrVoipPhoneNumber;

Translations

The bundle contains translations for the form field and validation constraints.

In cases where a language uses multiple terms for mobile phones, the generic language locale will use the term 'mobile', while country-specific locales will use the relevant term. So in English, for example, en uses 'mobile', en_US uses 'cell' and en_SG uses 'handphone'.

If your language doesn't yet have translations, feel free to open a pull request to add them in!

Configuration

To disable integrations with components

misd_phone_number:
    twig: false
    form: false
    serializer: false
    validator: false

License

This bundle is released under the MIT License. See the bundled LICENSE file for details.

Comments
  • Form's view data is expected to be a

    Form's view data is expected to be a "libphonenumber\PhoneNumber", but it is a "string".

    I'm effectively defining the form as $form->add('phone_number', PhoneNumberType::class, ['data' => $user->getPhoneNumber()]) with LocalUser::getPhoneNumber(): ?libphonenumber\PhoneNumber. The column is defined with type 'phone_number'. Submitting the form works and the value is inserted in the database, after which the page shows the phone number with spaces between triplets, but if I go to that page again, I get the following error:

    The form's view data is expected to be a "libphonenumber\PhoneNumber", but it is a "string". You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms "string" to an instance of "libphonenumber\PhoneNumber".
    

    Obviously I don't want to unset the data_class, but I did try adding 'constraint' => [ new Constraints\PhoneNumber([]) ]' like suggested in #32

    I'm not sure if using the constraint without passing something inside the array is valid, but I just want any phone number

    opened by someonewithpc 14
  • allow Symfony 6

    allow Symfony 6

    TODOs:

    • [x] adjust github action workflow matrix to test against all supported Symfony versions
    • [x] fix PhoneNumberNormalizer so it works for Symfony <6.0 and >=6.0
    opened by dmaicher 12
  • PhoneNumberValidator instantiation issue

    PhoneNumberValidator instantiation issue

    Getting the following error now since the last update. What's changed? This is from using the annotation assertion.

    ArgumentCountError: Too few arguments to function Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumberValidator::__construct(), 0 passed
    
    opened by oojacoboo 9
  • Inject PhoneNumberValidator as service

    Inject PhoneNumberValidator as service

    I need to inject PhoneNumberValidator into my custom validator (or into my other own services). Like I can do with Symfony EmailValidator:

    // services.yaml
    
    App\Validator\Constraints\MyOwnService:
            arguments: ['@validator.email']
    

    Can I do some trick with PhoneNumberValidator? Or we need to do some changes in the bundle first?

    opened by ekut 7
  • Falsy value handling

    Falsy value handling

    Hi, I send this PR to handle falsy values.

    I also change the format form E164 to INTERNATIONAL. To produce "+41 44 668 18 00" instead of "+41446681800". But I can revese it.

    opened by tattali 6
  • Restore JMS serializer integration

    Restore JMS serializer integration

    I'm curious on why you dropped the JMS Serializer integration. I wanted to use it and unfortunately discovered it is no longer available, why I do need to use this bundle as I'm using Symfony 5.

    @odolbeau Can you tell me why, and if there is no specific reason (there is none given in the commit message), are you open for returning it?

    opened by bobvandevijver 5
  • Twig extension functions are deprecated

    Twig extension functions are deprecated

    Hello,

    I've started using this bundle but noticed that one of the things that came over with the fork is that the twig functions phone_number_format and phone_number_is_type are marked as deprecated since 1.2. Are they being replaced? Is there a reason for the deprecation to stick? Just wondering if there's plans to do something there or not as its not really clear why there is a deprecation notice and no replacement.

    opened by gnat42 4
  • Missing default region when deserializing

    Missing default region when deserializing

    I have tried to prepare test detecting wrong phone number when creating new user with API Platform and I have the following issue.

    I'm sending

    {
          "phone": "123456789"
    }
    

    and this pops up

    Uncaught PHP Exception Symfony\Component\Serializer\Exception\UnexpectedValueException: "Missing or invalid default region." at /var/www/html/vendor/odolbeau/phone-number-bundle/src/Serializer/Normalizer/PhoneNumberNormalizer.php line 95

    I have expected set default region to be passed but it's not happening and PhoneNumberNormalizer has default ZZ.

    In my User entity I've got it like that:

    use Doctrine\ORM\Mapping as ORM;
    use Misd\PhoneNumberBundle\Validator\Constraints\PhoneNumber as AssertPhoneNumber;
    use Symfony\Component\Validator\Constraints as Assert;
    use Symfony\Component\Serializer\Annotation\Groups;
    
    class User
    {
        public const PHONE_DEFAULT_REGION = 'NO';
    
        /**
         * @ORM\Column(type="phone_number")
         * @Assert\NotNull()
         * @AssertPhoneNumber(defaultRegion=App\Entity\User::PHONE_DEFAULT_REGION)
         * @Groups({"user.read", "user.write"})
         */
        private ?PhoneNumber $phone = null;
    
        public function getPhone(): ?PhoneNumber
        {
            return $this->phone;
        }
    
        /**
         * @param PhoneNumber|string $phone
         * @throws NumberParseException
         */
        public function setPhone($phone): void
        {
            if (is_string($phone)) {
                $phone = PhoneNumberUtil::getInstance()->parse($phone, self::PHONE_DEFAULT_REGION);
            }
    
            $this->phone = $phone;
        }
    }
    

    Is there anything I'm doing wrong?

    opened by bizley 4
  • Fix PhoneNumber constraint default message

    Fix PhoneNumber constraint default message

    If using validation by @Attribute, when it fails, the default message when there is more than one type is:

    https://github.com/odolbeau/phone-number-bundle/blob/40e330c21d24903fac53aca5acb4b2ebce7a38a3/src/Validator/Constraints/PhoneNumber.php#L115

    Which does not have a translated message. As I see, the default message should be "This value is not a valid phone number.".

    opened by zavarock 3
  • Fix Catalan locale code in translations filename

    Fix Catalan locale code in translations filename

    Catalan base language code is ca. The ca_ES code is just a country-specific dialect (Catalan from Spain). Just like en, es and pt are base language codes and en_AU (English from Australia), es_419 (Spanish from LATAM) and pt_BR (Portuguese from Brazil) are dialects.

    Catalan in wikipedia Common IETF primary language subtags

    opened by aprat84 3
  • Avoid php 8.1 deprecation.

    Avoid php 8.1 deprecation.

    HI @odolbeau

    I'm getting a deprecation

    Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /Users/vincentlanglet/VenteUnique/v8/vendor/odolbeau/phone-number-bundle/src/Form/DataTransformer/PhoneNumberToArrayTransformer.php on line 79
    

    This would solve the deprecation.

    opened by VincentLanglet 3
  • Letters in number break validation

    Letters in number break validation

    The parse() function "will convert letters into numbers where appropriate, and strip the others", as mentioned here https://github.com/giggsey/libphonenumber-for-php/issues/470#issuecomment-947456303.

    For example, when using the default single text form type with the number +49 30 12345 abc, the validation succeeds. However it is not actually valid, but the parsing changes it to +49 30 12345222 after submitting, which is a valid number. Same for the country choice widget.

    I think this should be considered a bug here.

    The fix is quite simple and I applied it like this in my app. There simply needs to be an additional regex constraint for the number field to exclude all letters. This is also what giggsey recommends in the issue linked above:

    If you want to ensure it's numeric before you try libphonenumber, I'd suggest using additional validation first.

    Example for country choice widget:

    $builder->add(
        'phoneNumber',
        PhoneNumberType::class,
        [
            'widget' => PhoneNumberType::WIDGET_COUNTRY_CHOICE,
            'number_options' => [
                'constraints' => [new Regex(pattern: '/[\p{L}]/u', message: 'The number can not contain letters.', match: false)],
            ],
        ],
    );
    
    image

    I could not get this simple solution to work for the single text widget though, because the number is already parsed, when it gets to this additional constraint with code like this:

    $builder->add(
        'phoneNumber',
        PhoneNumberType::class,
        [
            'widget' => PhoneNumberType::WIDGET_SINGLE_TEXT,
            'constraints' => [new Regex(pattern: '/[\p{L}]/u', message: 'The number can not contain letters.', match: false)],
        ],
    );
    

    invalidValue is already a PhoneNumber here, instead of string. This makes the Regex constraint fail for every input, even valid numbers without letters.

    image

    I played around with the PhoneNumberValidator, but the $value there is also already a parsed PhoneNumber. Which also probably means that everything inside https://github.com/odolbeau/phone-number-bundle/blob/master/src/Validator/Constraints/PhoneNumberValidator.php#L73 is never executed.

    For some reason it is parsed multiple times, but I don't know Symfony Form/Validation well enough to understand why/when/where this happens. Must be either the Transformer or Normalizer.

    opened by gndk 0
  • [Validator] Validate country of the phone number

    [Validator] Validate country of the phone number

    Currently, the validator is able to verify the type of phone number but not the country/region.

    I think it would be a nice improvement to add this feature. WDYT?

    enhancement good first issue 
    opened by Nek- 0
  • Possible Way to implement Flags into Form or Twig

    Possible Way to implement Flags into Form or Twig

    I don't know if it would work that easy, but would it be possible to add country flags into the Form?

    while searching for phone number features i found this: https://intl-tel-input.com/

    might that be able to work with this Symfony Bundle?

    help wanted 
    opened by Hanmac 5
  • Support templating

    Support templating

    The supported templates of the bundle would need a refresh to be aligned with what the twig bridge supports. There may be nothing to do on some integration but still worth checking :

    • [x] Bootstrap 4 : https://github.com/odolbeau/phone-number-bundle/pull/74
    • [x] Bootstrap 5 : https://github.com/odolbeau/phone-number-bundle/pull/79
    • [ ] Foundation 5
    • [ ] Foundation 6
    • [ ] Tailwind 2
    enhancement help wanted good first issue 
    opened by maxhelias 2
  • Current dbal storage does not support extensions.

    Current dbal storage does not support extensions.

    Perhaps the serialization format for dbal should be changed to RFC-3966?

    Discussion at https://github.com/misd-service-development/phone-number-bundle/issues/183

    enhancement help wanted 
    opened by wizhippo 3
Releases(v3.9.0)
  • v3.9.0(Dec 19, 2022)

    Added

    • Add Hungarian translations #129
    • Add more french translations #130
    • Add new (short) render format for countries in form type #95

    Changed

    • The message This value is not a valid number. that was not translated inside the bundle is now This value is not a valid phone number. (and is translated into many languages) #128
    Source code(tar.gz)
    Source code(zip)
  • v3.8.0(Oct 24, 2022)

  • v3.7.0(Jul 4, 2022)

    Added

    • Maintenance: added return types on methods, avoid deprecation trigger, make the bundle future-proof

    Fixed

    • Name of the catalan translation file is now accurate #116
    • Remove deprecation notice when using annotations
    Source code(tar.gz)
    Source code(zip)
  • v3.6.3(Jun 14, 2022)

    Added

    • Add catalan translation

    Changed

    • Deprecate PhoneNumber::$errorNames in favour of PhoneNumber::ERROR_NAMES.

    Fixed

    • Deprecation notice on Symfony >= 6.1
    Source code(tar.gz)
    Source code(zip)
  • v3.6.2(Feb 24, 2022)

    What's Changed

    • fix of the options format on the validator constraint by @KDederichs in https://github.com/odolbeau/phone-number-bundle/pull/102

    New Contributors

    • @KDederichs made their first contribution in https://github.com/odolbeau/phone-number-bundle/pull/102

    Full Changelog: https://github.com/odolbeau/phone-number-bundle/compare/v3.6.1...v3.6.2

    Source code(tar.gz)
    Source code(zip)
  • v3.6.1(Dec 30, 2021)

    What's Changed

    • php8 return types compatible by @maikelohcfg in https://github.com/odolbeau/phone-number-bundle/pull/99
    • Prepare 3.6.1 by @odolbeau in https://github.com/odolbeau/phone-number-bundle/pull/100

    New Contributors

    • @maikelohcfg made their first contribution in https://github.com/odolbeau/phone-number-bundle/pull/99

    Full Changelog: https://github.com/odolbeau/phone-number-bundle/compare/v3.6.0...v3.6.1

    Source code(tar.gz)
    Source code(zip)
  • v3.6.0(Dec 7, 2021)

    What's Changed

    • doc: update docs with attribute usage instead of annotations by @Nek- in https://github.com/odolbeau/phone-number-bundle/pull/92
    • Make the form type example use the same property name as entity example issue #93 by @Nek- in https://github.com/odolbeau/phone-number-bundle/pull/94
    • allow Symfony 6 by @dmaicher in https://github.com/odolbeau/phone-number-bundle/pull/96
    • Prepare v3.6.0 by @odolbeau in https://github.com/odolbeau/phone-number-bundle/pull/98

    New Contributors

    • @dmaicher made their first contribution in https://github.com/odolbeau/phone-number-bundle/pull/96

    Full Changelog: https://github.com/odolbeau/phone-number-bundle/compare/v3.5.0...v3.6.0

    Source code(tar.gz)
    Source code(zip)
  • v3.5.0(Oct 27, 2021)

  • v3.4.2(Jun 28, 2021)

  • v3.4.1(Apr 12, 2021)

  • v3.4.0(Apr 6, 2021)

  • v3.3.3(Feb 4, 2021)

    Added

    • Can now define a property path for the region on PhoneNumber constraint
    • New option to specify default region for serialization
    • New option to specify the format of the serialization
    Source code(tar.gz)
    Source code(zip)
  • v3.3.2(Jan 22, 2021)

  • v3.3.1(Jan 22, 2021)

  • v3.3.0(Jan 5, 2021)

  • v3.2.1(Oct 28, 2020)

  • v3.2.0(Oct 23, 2020)

  • v3.1.1(Jun 19, 2020)

  • v3.1.0(Apr 27, 2020)

    • Add support of null values in phone number deserializer
    • Refactor PhoneNumber constraints & validator to accept more than 1 type.
    • Clarify LICENSE & add copyright back
    • Update README
    • Revamped folder
    • Add the ability to pass options down to country and number fields

    See CHANGELOG

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0(Nov 26, 2019)

  • v2.0.2(Nov 25, 2019)

  • v2.0.1(Nov 25, 2019)

  • v2.0.0(Nov 25, 2019)

    • Drop support for Symfony < 3.4
    • Drop support for PHP < 7.2
    • Drop support for JMS Serializer
    • Drop support for PHP templates
    • Rename tel_widget to phone_number_widget
    • Add services only if relevant (optional) dependencies are available

    See CHANGELOG

    Source code(tar.gz)
    Source code(zip)
Owner
Olivier Dolbeau
Web Developer / Architect, Symfony2 fan, @swarrot maintainer, be[a|e]r lover. Former Webdev @Coverd, CTO @shapintv, WebArchitect @blablacar
Olivier Dolbeau
Adds phone number functionality to TYPO3 based on the PHP port of Google's libphonenumber API by giggsey

TYPO3 Phone Adds phone number functionality to TYPO3 based on the PHP port of Google's libphonenumber API by giggsey. Installation composer require si

Simon Schaufelberger 3 Oct 25, 2022
Integrates the Trix Editor with Laravel. Inspired by the Action Text gem from Rails.

Integrates the Trix Editor with Laravel. Inspired by the Action Text gem from Rails. Installation You can install the package via composer: composer r

Tony Messias 267 Jan 4, 2023
Laravel Debugbar (Integrates PHP Debug Bar)

Laravel Debugbar This is a package to integrate PHP Debug Bar with Laravel. It includes a ServiceProvider to register the debugbar and attach it to th

Barry vd. Heuvel 14.7k Dec 30, 2022
Admin Theme based on the AdminLTE Template for easy integration into symfony

Admin Theme based on the AdminLTE Template for easy integration into symfony

Marc Bach 281 Aug 30, 2022
Laravel Segment is an opinionated, approach to integrating Segment into your Laravel application.

Laravel Segment Laravel Segment is an opinionated, approach to integrating Segment into your Laravel application. Installation You can install the pac

Octohook 13 May 16, 2022
Laravel package that converts your application into a static HTML website

phpReel Static Laravel Package phpReel Static is a simple Laravel Package created and used by phpReel that converts your Laravel application to a stat

phpReel 16 Jul 7, 2022
Smeify is a Stable Automated Solution for Airtime and Data businesses in Nigeria, this package helps you integrate smeify easily into your laravel application.

Smeify is a Stable Automated Solution for Airtime and Data businesses in Nigeria, this package helps you integrate smeify easily into your laravel application.

Ogundiran Adewale Charles 2 Jul 27, 2022
Integrate likes, bookmarks, favorites, reactions and custom made marks into your application

Laravel Markable This package allows you to easily add the markable feature to your application, as for example likes, bookmarks, favorites and so on.

H-FARM Innovation 500 Jan 5, 2023
Easily integrate single-database multi tenant features into your Laravel application

Laravel Tenant Aware Easily integrate single-database multi tenant features into your Laravel application. Installation You can install the package vi

H-FARM Innovation 9 Dec 21, 2022
Take a look into your Laravel views

Xray - Take a look into your Laravel views When your Laravel project grows, so do the Laravel views. Sometimes it might be hard to figure out, which p

Beyond Code 572 Aug 6, 2022
Laravel package to normalize your data before saving into the database.

This package helps you normalize your data in order to save them into the database. The Goal is to having separate classes that handle the data normalization, and thus can be tested independently.

Nicolas Widart 11 Apr 21, 2021
Filament Plugin to help implement Cloudflare turnstile into your forms.

Filament Turnstile Filament Turnstile, is a plugin to help you implement the Cloudflare turnstile. This plugin uses Laravel Turnstile Behind the scene

Coderflex 5 Jun 12, 2023
Automatically load your helpers in your laravel application.

Laravel AutoHelpers Automatically load your helpers in your laravel application. Installation You can install the package via composer: composer requi

Florian Wartner 6 Jul 26, 2021
Turn any Eloquent model into a list!

Listify Turn any Eloquent model into a list! Description Listify provides the capabilities for sorting and reordering a number of objects in a list. T

Travis Vignon 138 Nov 28, 2022
Simplest Slugify for PHP to convert string into a slug.

Simplest Slugify for PHP to convert string into a slug. Documentation You can find the detailed documentation here in Slugify Documentation. Contribut

Pharaonic 6 Mar 12, 2022
Laravel package integrating PHP Flasher into Livewire applications

A powerful and flexible flash notifications system for PHP, Laravel, Symfony ?? PHP Flasher helps you to add flash notifications to your PHP projects.

PHP Flasher 9 Jul 5, 2022
Package to parse DNA kit files, and import them into Laravel

Package to parse DNA kit files, and import them into Laravel

Family Tree 365 4 Aug 31, 2022
Convert remote api response data into laravel model

laravel remote model Create remote driver to convert remote api request into laravel model. 中文文档 日本語文書 overview Install the version between laravel5.5

张子彬 15 Aug 11, 2022
Html-sanitizer - The HtmlSanitizer component provides an object-oriented API to sanitize untrusted HTML input for safe insertion into a document's DOM.

HtmlSanitizer Component The HtmlSanitizer component provides an object-oriented API to sanitize untrusted HTML input for safe insertion into a documen

Symfony 201 Dec 23, 2022