Laravel zip content validator

Laravel Zip Content Validator by Orkhan Ahmadov is a custom validation rule for checking the contents of an uploaded ZIP file:

use Orkhanahmadov\ZipValidator\Rules\ZipContent;

public function rules()
{
    return [
        'file' => [
            'required',
            'file',
            'mimes:zip',
            new ZipContent('thumb.jpg', 'assets/logo.png')
        ],
    ];
}

In addition to checking the existence of file paths, you can also validate the maximum size of a file. The unit of the value is bytes: 100000 equals 100KB:

new ZipContent(['thumb.jpg' => 100000, 'logo.png']);

You can also use an “or” style of validation. Here’s an example of “or” validation in tandem with maximum size:

new ZipContent(['thumb.jpg|thumb.png' => 100000]);

Finally, you can reject empty files with false as a second argument:

new ZipContent(['thumb.jpg', 'style.css'], false);

https://github.com/orkhanahmadov/laravel-zip-validator

Laravel Response Builder

Данная библиотека позволяет абстрагировать ответы и кастомизировать их. Можно не создавать свою архитектуру и классы для Response, а достаточно подключить библиотеку и юзать.

Внимание! Проверьте требования перед выбором версии:

https://github.com/MarcinOrlowski/laravel-api-response-builder/blob/master/docs/docs.md

Laravel Multilang

Добавили автоматические роуты для интернационализации.

Было:

Route::get('/', 'ShowHomeController')->name('en.home');
Route::get('/fr', 'ShowHomeController')->name('fr.home');

Стало:

Route::multilingual('/', 'ShowHomeController')->name('home');

Так же можно добавить мидлвейр чтобы автоматом проверять изменился ли язык в урле.

protected $middlewareGroups = [
    'web' => [
        \ChinLeung\LaravelMultilingualRoutes\DetectRequestLocale::class,
        // ...
    ]
];

Пример конфигурации:

// config/locales.php
'supported' => [
    'en',
    'es',
    'fr',
],

Пакет GitHub

Laravel Horizon

Познакомился недавно с laravel horizon, очень прикольная, а главное полезная штука для моих проектов.

Некое управление джобами и очередями в лаврухе с удобной админой со всякой метрикой и управлением джобами.

Не буду пересказывать вам что оно из себя представляет т.к. в официальной доке все написано, НО столкнулся с проблемой, что у меня были очень долги джобы связанные с запросами на сторонние сервисы для сбора большой информации и поэтому джоба часто улетала в тайм аут . Вы скажете почему ты ее не разобьешь на еще другие джобы, но это не решит проблему, вообщем после серфинга и перебора кучи документации узнал про флаг —timeout я думаю обьяснять зачем не стоит, так как тут все понятно 🙂 (не знаю как обьяснить 😀 )

Вообщем поставил на 0 и все работало как надо

В horizon так не сработало, так как он работает только с redis, а до этого у меня были очереди через database коннектор, поэтому после долгих мучений, проб и ошибок , было выяснено что в конфиге очередей, а именно в коннекторе redis, есть флаг retry_after, который то и отвечал за переконнект.

Короче поставил таумаут 0, а ретрай больше. Вроде сработало и работает. Будем смотреть что будет дальше

А так очень удобная фича, особенно порадовало распределение воркеров по нагрузке очередей.

Laravel helpers

О очень обожаемом нашем фреймворке Laravel имеются вспомогательные функции.

$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20, $replace = '');

Пригодится для обрезки строки.

$plural = Str::plural('car', 123); //cars
$singular = Str::singular('cars'); // car

Преобразование в многочисленный род и наоборот в ед.

$slug = Str::slug('Laravel 5 Framework', '-');

Для урлов

Laravel SQL команды миграций в файл.

Иногда возникает проблемы деплоя на продакшен не через git как мы все привыкали, а через ftp, но как быть с миграции, когда хостинг самый дешевый и вызвать миграции способом php artisan migrate не вариант, то следующая команда вам поможет.

php artisan migrate --pretend > migrations.sql