Форматирование номера телефона, проверка и приведение моделей в Laravel могут быть выполнены с помощью различных подходов и пакетов. В Laravel есть несколько способов обработки и валидации данных, включая использование встроенных функций валидации, а также создание собственных правил валидации и приведение.

Форматирование номера телефона

Для форматирования номера телефона можно использовать регулярные выражения или сторонние пакеты, такие как libphonenumber-for-php от Google.

Использование регулярных выражений

function formatPhoneNumber($phoneNumber) {
    $phoneNumber = preg_replace('/[^0-9]/', '', $phoneNumber);
    return preg_replace('/^(\d{3})(\d{3})(\d{4})$/', '($1) $2-$3', $phoneNumber);
}

Использование пакета libphonenumber-for-php

Установите пакет через Composer:

composer require giggsey/libphonenumber-for-php

Используйте пакет для форматирования номера телефона:

use Giggsey\Libphonenumber\PhoneNumberUtil;

function formatPhoneNumber($phoneNumber, $defaultRegion = 'US') {
    $phoneUtil = PhoneNumberUtil::getInstance();
    $numberProto = $phoneUtil->parse($phoneNumber, $defaultRegion);
    return $phoneUtil->format($numberProto, PhoneNumberFormat::NATIONAL);
}

Проверка и приведение моделей

Проверка моделей

В Laravel вы можете использовать встроенные функции валидации для проверки данных модели. Например, в контроллере:

public function store(Request $request)
{
    $validatedData = $request->validate([
        'phone_number' => 'required|regex:/^\+?\d{10,15}$/',
        // Другие правила валидации
    ]);

    // Сохранение данных
}

Приведение моделей

Для приведения данных модели можно использовать метод setAttribute в модели Eloquent или создать собственные методы приведения.

class User extends Model
{
    public function setPhoneNumberAttribute($value)
    {
        $this->attributes['phone_number'] = formatPhoneNumber($value);
    }
}

Заключение

Форматирование номера телефона и проверка данных модели в Laravel могут быть выполнены с помощью различных подходов, включая использование встроенных функций валидации, регулярных выражений и сторонних пакетов. Выбор подхода зависит от конкретных требований вашего приложения и предпочтений разработчика.