Пользовательские карточки Laravel Pulse
Статья объясняет, как создать пользовательские карточки в Laravel Pulse для отображения метрик, таких как количество запросов на каждую машину Fly.io. В ней описывается создание Livewire-компонента, настройка отображения данных на карточке, перехват запросов с помощью middleware и запись этих данных в таблицы Pulse. В конце показывается, как вывести собранные данные на кастомной карточке в панели управления Pulse.
👉 @WebCraft | #laravel
Статья объясняет, как создать пользовательские карточки в Laravel Pulse для отображения метрик, таких как количество запросов на каждую машину Fly.io. В ней описывается создание Livewire-компонента, настройка отображения данных на карточке, перехват запросов с помощью middleware и запись этих данных в таблицы Pulse. В конце показывается, как вывести собранные данные на кастомной карточке в панели управления Pulse.
👉 @WebCraft | #laravel
Работа с методом dispatchAfterResponse() в Laravel
Когда выполняется задача, отправленная с помощью метода
Если забыли, то вернитесь к посту от02.09.2024 .
👉 @web_craft | #laravel
Когда выполняется задача, отправленная с помощью метода
dispatchAfterResponse()
?Если забыли, то вернитесь к посту от
👉 @web_craft | #laravel
Защита полей модели
В Laravel механизм массового заполнения (
Предположим, у нас есть модель
В примере поля
👉 @WebCraft | #laravel
В Laravel механизм массового заполнения (
Mass Assignment
) позволяет быстро создавать или обновлять модели, заполняя их атрибуты массивом данных. Однако, чтобы предотвратить нежелательное или вредоносное заполнение полей, важно правильно настроить защиту через свойства $fillable
или $guarded
.$guarded
— это массив полей модели, которые запрещено массово заполнять. В отличие от $fillable
, который указывает на разрешенные для массового заполнения поля, $guarded
работает по принципу "запрещено всё, кроме". Это значит, что все поля модели защищены от массового заполнения, кроме тех, которые явно не указаны в массиве $guarded
.Предположим, у нас есть модель
User
, и мы хотим запретить массовое заполнение полей is_admin
и password
, чтобы они не могли быть изменены через массовое заполнение.class User extends Model
{
protected $guarded = ['is_admin', 'password'];
}
В примере поля
is_admin
и password
будут защищены от массового заполнения.👉 @WebCraft | #laravel
Прокси объектов коллекции в Laravel на уровне высших порядков
Статья описывает механизм прокси объектов в Laravel для работы с коллекциями. Высокоуровневые прокси позволяют передавать методы к объектам коллекций напрямую, упрощая код и делая его более читаемым. Примеры включают отправку писем заблокированным пользователям или автоматизацию браузеров при тестировании.
👉 @web_craft | #laravel
Статья описывает механизм прокси объектов в Laravel для работы с коллекциями. Высокоуровневые прокси позволяют передавать методы к объектам коллекций напрямую, упрощая код и делая его более читаемым. Примеры включают отправку писем заблокированным пользователям или автоматизацию браузеров при тестировании.
👉 @web_craft | #laravel
Работа с методом withoutSyncingToSearch()
Что делает метод
Если забыли, то вернитесь к посту от09.09.2024 .
👉 @web_craft | #laravel
Что делает метод
withoutSyncingToSearch()
в Laravel?Если забыли, то вернитесь к посту от
👉 @web_craft | #laravel
Кастомные атрибуты в моделях Laravel
В Laravel можно легко работать с кастомными атрибутами моделей, используя методы
-
-
В примере метод
👉 @web_craft | #laravel
В Laravel можно легко работать с кастомными атрибутами моделей, используя методы
getAttribute()
, setAttribute()
. Эти методы позволяют контролировать, как данные сохраняются и выводятся из модели.-
getAttribute()
: используется для доступа к значениям атрибутов. С его помощью можно модифицировать данные перед их возвратом.-
setAttribute()
: позволяет модифицировать данные перед их сохранением в базе. Это удобно для предварительной обработки данных, например, шифрования паролей.class User extends Model
{
public function getFullNameAttribute()
{
return "{$this->first_name} {$this->last_name}";
}
public function setPasswordAttribute($value)
{
$this->attributes['password'] = bcrypt($value);
}
}
В примере метод
getFullNameAttribute()
возвращает полное имя пользователя, а setPasswordAttribute()
шифрует пароль перед сохранением в базе данных.👉 @web_craft | #laravel
Использование метода flushQueryLog()
Для чего используется метод
Забыли? Вернитесь к посту от16.09.2024 .
👉 @web_craft | #laravel
Для чего используется метод
flushQueryLog()
в Laravel?Забыли? Вернитесь к посту от
👉 @web_craft | #laravel
Магия нового помощника defer() в Laravel
Статья объясняет, как работает новый хелпер
👉 @web_craft | #laravel
Статья объясняет, как работает новый хелпер
defer()
в Laravel, который позволяет откладывать выполнение долгих задач до завершения ответа. Он полезен для повышения производительности приложений, особенно при выполнении времязатратных операций, таких как обращения к внешним API. Автор также раскрывает детали работы метода и объясняет, как это реализовано на уровне middleware без использования очередей.👉 @web_craft | #laravel
Работа с массивом $guarded
Что делает массив
Если забыли, то вернитесь к посту от23.09.2024 .
👉 @WebCraft | #laravel
Что делает массив
$guarded
в модели Laravel?Если забыли, то вернитесь к посту от
👉 @WebCraft | #laravel
Хук для отмены восстановления удалённых моделей
Хук
Также можно использовать хук
👉 @web_craft | #laravel
Хук
eloquent.restoring
вызывается перед тем, как восстановить мягко удалённую модель. Если вернуть false
в функции-обработчике, Laravel отменит восстановление модели, и она останется помеченной как удалённая.use App\Models\User;
use Illuminate\Support\Facades\Event;
// Запрещаем восстановление заблокированных пользователей
Event::listen('eloquent.restoring: ' . User::class, function (User $user) {
if ($user->isBlocked) {
return false;
}
});
Также можно использовать хук
eloquent.restoring
для логирования попыток восстановления или выполнения асинхронных операций перед тем, как модель будет восстановлена:Event::listen('eloquent.restoring: ' . User::class, function (User $user) {
Log::info('Попытка восстановления пользователя: ' . $user->id);
if ($user->restorationAttempts >= 3) {
$user->sendRestorationWarning(); // Отправка предупреждения при частых попытках
return false;
}
});
👉 @web_craft | #laravel