mountainclans/livewire-translatable
最新稳定版本:1.1.4
Composer 安装命令:
composer require mountainclans/livewire-translatable
包简介
This is my package livewire-translatable
README 文档
README
UI компонент для интуитивной работы с переводимыми полями. Опирается на функциональность, предоставляемую пакетом Spatie Translatable.
Установка
Установите пакет при помощи Composer:
composer require mountainclans/livewire-translatable
Обратите внимание, что для корректной стилизации в вашем проекте должен использоваться TailwindCSS.
Добавьте в tailwind.config.js в секцию content:
'./vendor/mountainclans/livewire-translatable/resources/views/**/*.blade.php'
Опубликуйте файл конфигурации и задайте в нём нужные языки, на которые переводится ваш сайт:
php artisan vendor:publish --tag="livewire-translatable-config"
Опционально, вы можете опубликовать views для их переопределения:
php artisan vendor:publish --tag="livewire-translatable-views"
Использование
Оберните translatable-поля компонентом <x-ui.translatable>:
<x-ui.translatable>
Переводимые поля, к примеру
<x-ui.input wire:model="title"
translatable
placeholder="{{ __('Enter the page title') }}"
label="{{ __('Page title *') }}"
/>
</x-ui.translatable>
Каждому из переводимых полей необходимо добавить атрибут translatable.
Поддерживаемые компоненты переводимых полей
<x-ui.input>из пакета Livewire UI<x-ui.tiptap>из пакета Livewire Tiptap
ContentLanguages
Пакет предоставляет сервис-класс ContentLanguages, имеющий два статических метода:
ContentLanguages::all()- позволяет получить массив всех языков, на которые переводится приложение в форматеключ=>название языка.ContentLanguages::default()- возвращает ключ первого языка, заданного в конфигурации.
Трейты
Трейт FilledTranslatableFields
Трейт позволяет задать пустые стартовые значения для всех языков, на которые переводится сайт, для только что инициализированного поля. Полезен при использовании с редактором, который требует строку при инициализации значения.
Использование:
# Your livewire component //... use MountainClans\LivewireTranslatable\Traits\FilledTranslatableFields; public function mount(?string $blogId = null): void { if ($this->blogId) { $this->blog = Blog::findOrFail($this->blogId); $this->content = $this->blog->getAllTranslations('content'); //... } }
Поле модели (в данном случае, content) обязательно должно быть указано в списке $translatable атрибутов модели.
Трейт RequireTranslations
Предоставляет Livewire-компоненту метод requireTranslations, позволяющий убедиться при валидации поля, что у него есть переводы полей.
# Your livewire component public function saveSomething(): void { $this->validate([ 'categoryId' => [ 'nullable', 'exists:blog_categories,id', ], ...$this->requireTranslations('title', true, true, 10, 255), ]); }
Метод принимает следующие параметры:
- string
$fieldName- поле компонента, которое валидируем; - bool
$isOptional- можно ли оставить его пустым; - bool
$requireDefaultLanguage- требовать ли заполнения хотя бы ключа по умолчанию (получаемого изContentLanguages::default()); - int
$minLength- минимальная длина поля; - int
$maxLength- максимальная длина поля.
Трейт LogTranslatableAttributes
Позволяет корректно логировать изменения в переводимых полях модели с использованием пакета Spatie Activitylog.
class YourModel extends Model { use LogsActivity; // обязательно подключите трейт от Spatie use LogTranslatableAttributes; public array $translatable = [ // ... ]; }
Использование трейта опционально. Данный пакет не требует использования пакета Spatie Activitylog.
Изменения
Получите больше информации об изменениях в пакете, прочитав CHANGELOG.
Авторы
Лицензия
The MIT License (MIT). Please see License File for more information.
统计信息
- 总下载量: 21
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-07-08