ecolabor/filament-swiss-uid-search
最新稳定版本:v0.1.0
Composer 安装命令:
composer require ecolabor/filament-swiss-uid-search
包简介
Filament v4 plugin for searching Swiss companies via the UID (Unternehmens-Identifikationsnummer) webservice
关键字:
README 文档
README
Ein Filament v4 Plugin zur Suche nach Schweizer Unternehmen über den UID-Webservice (Unternehmens-Identifikationsnummer) des Bundesamts für Statistik.
Features
- 🔍 UID-Suchfeld mit automatischer Firmenabfrage und Live-Validierung
- 🏢 Firmensuche nach Name mit Filteroptionen (Kanton, Ort)
- 🔄 Automatisches Befüllen von Formularfeldern
- ✅ Live-Validierung der UID mit visuellem Feedback (✓/✗)
- 🎴 Company Card Komponente für schöne Firmendarstellung
- 🇨🇭 Schweizer Lokalisierung (de_CH, fr_CH, it_CH) + Fallbacks (de, fr, it, en)
- 🎨 Native Filament v4 Integration - passt sich automatisch an dein Theme an
- 🌓 Dark Mode Support
Installation
composer require ecolabor/filament-swiss-uid-search
Plugin registrieren
Fügen Sie das Plugin zu Ihrem Panel hinzu:
use Ecolabor\FilamentSwissUidSearch\FilamentSwissUidSearchPlugin; public function panel(Panel $panel): Panel { return $panel // ... ->plugin( FilamentSwissUidSearchPlugin::make() ->defaultLanguage('de') ->searchLimit(50) ); }
Verwendung
UID-Suchfeld
Das UidSearch-Feld ermöglicht die direkte Suche nach einer UID-Nummer mit Live-Validierung:
use Ecolabor\FilamentSwissUidSearch\Forms\Components\UidSearch; public static function form(Form $form): Form { return $form ->schema([ UidSearch::make('uid') ->label('UID-Nummer') ->showValidationIndicator() // Zeigt ✓ oder ✗ während der Eingabe ->mapName('company_name') ->mapStreet('street') ->mapZipCode('zip_code') ->mapCity('city') ->mapCanton('canton') ->mapLegalForm('legal_form'), TextInput::make('company_name') ->label('Firmenname'), TextInput::make('street') ->label('Strasse'), TextInput::make('zip_code') ->label('PLZ'), TextInput::make('city') ->label('Ort'), TextInput::make('canton') ->label('Kanton'), TextInput::make('legal_form') ->label('Rechtsform'), ]); }
Features des UidSearch-Feldes:
- 🇨🇭 Schweizer Flagge als Prefix
- ✅ Live-Validierung mit Prüfziffer-Check
- 🔍 Such-Button zum Abrufen der Firmendaten
- 🔄 Automatisches Befüllen der verknüpften Felder
Firmensuche nach Name
Das CompanySearch-Feld öffnet ein Modal zur Firmensuche:
use Ecolabor\FilamentSwissUidSearch\Forms\Components\CompanySearch; CompanySearch::make('company_search') ->label('Firma suchen') ->mapUid('uid') ->mapName('company_name') ->mapStreet('street') ->mapZipCode('zip_code') ->mapCity('city') ->searchLimit(100)
Search Action
Alternativ können Sie eine Action verwenden:
use Ecolabor\FilamentSwissUidSearch\Actions\SearchUidAction; public static function form(Form $form): Form { return $form ->schema([ // ... Ihre Felder ]) ->headerActions([ SearchUidAction::make() ->mapUid('uid') ->mapName('company_name') ->mapStreet('street') ->mapZipCode('zip_code') ->mapCity('city'), ]); }
Custom Callback
Sie können auch einen eigenen Callback definieren:
UidSearch::make('uid') ->onCompanySelected(function (UidEntity $entity, Set $set) { // Ihre eigene Logik hier $set('custom_field', $entity->vatNumber); // Log oder andere Aktionen logger()->info('Firma ausgewählt', ['uid' => $entity->uid]); })
Company Card Komponente
Die company-card Blade-Komponente ermöglicht eine schöne Darstellung von Unternehmensdaten:
<x-filament-swiss-uid-search::components.company-card :company="$company" :showVatNumber="true" :showLegalForm="true" :showAddress="true" :showStatus="true" :selectable="true" :selected="false" />
Props:
| Prop | Typ | Default | Beschreibung |
|---|---|---|---|
company |
UidEntity|array |
required | Das Unternehmensobjekt |
showVatNumber |
bool |
true |
MWST-Nummer anzeigen |
showLegalForm |
bool |
true |
Rechtsform anzeigen |
showAddress |
bool |
true |
Adresse anzeigen |
showStatus |
bool |
true |
Status-Badge anzeigen |
selectable |
bool |
false |
Klickbar machen |
selected |
bool |
false |
Als ausgewählt markieren |
In einer Livewire-Komponente:
@foreach($companies as $company) <x-filament-swiss-uid-search::components.company-card :company="$company" :selectable="true" wire:click="selectCompany('{{ $company->uid }}')" /> @endforeach
Alle Field Mappings
| Methode | Beschreibung |
|---|---|
mapUid($field) |
UID-Nummer (formatiert) |
mapName($field) |
Firmenname |
mapStreet($field) |
Strasse mit Hausnummer |
mapHouseNumber($field) |
Nur Hausnummer |
mapZipCode($field) |
Postleitzahl |
mapCity($field) |
Ort |
mapCanton($field) |
Kantonskürzel (z.B. "ZH") |
mapLegalForm($field) |
Rechtsform |
mapVatNumber($field) |
MWST-Nummer |
Plugin Konfiguration
FilamentSwissUidSearchPlugin::make() ->defaultLanguage('de') // API-Sprache ->searchLimit(50) // Max. Suchergebnisse ->showVatNumber(true) // MWST-Nr. anzeigen ->showLegalForm(true) // Rechtsform anzeigen ->showAddress(true) // Adresse anzeigen
Konfiguration
Veröffentlichen Sie die Konfigurationsdatei:
php artisan vendor:publish --tag=filament-swiss-uid-search-config
Übersetzungen / Lokalisierung
Das Plugin unterstützt sowohl Standard-Locales als auch Schweizer Regionen:
| Locale | Sprache | Hinweis |
|---|---|---|
de |
Deutsch | Standard |
de_CH |
Schweizerdeutsch | Schweizer Konventionen (ss statt ß) |
fr |
Französisch | Standard |
fr_CH |
Französisch (Schweiz) | IDE statt UID |
it |
Italienisch | Standard |
it_CH |
Italienisch (Schweiz) | IDI statt UID |
en |
Englisch | International |
Schweizer Terminologie
Die Schweizer Varianten verwenden die offiziellen Begriffe:
- 🇩🇪 UID = Unternehmens-Identifikationsnummer
- 🇫🇷 IDE = Identificateur des entreprises
- 🇮🇹 IDI = Numero d'identificazione delle imprese
Übersetzungen anpassen
Veröffentlichen Sie die Sprachdateien:
php artisan vendor:publish --tag=filament-swiss-uid-search-translations
Die Dateien werden nach resources/lang/vendor/filament-swiss-uid-search/ kopiert.
Styling & Theming
Das Plugin verwendet ausschliesslich Filament's native CSS-Klassen und Tailwind. Dadurch passt es sich automatisch an dein bestehendes Theme an:
- ✅ Primary Color - Buttons und Aktionen nutzen deine
primaryFarbe - ✅ Dark Mode - Vollständige Unterstützung für Light/Dark Mode
- ✅ Status Colors -
success,danger,warningfür Validierung - ✅ Keine Custom CSS - Kein Überschreiben deines Designs
Das Plugin erbt automatisch alle Theme-Anpassungen, die du in deinem AdminPanelProvider definiert hast.
Abhängigkeiten
Dieses Plugin benötigt das ecolabor/laravel-swiss-uid-search Laravel-Package:
composer require ecolabor/laravel-swiss-uid-search
Testing
composer test
Lizenz
MIT License. Siehe LICENSE für weitere Informationen.
Credits
- ecolabor GmbH
- Basierend auf dem UID-Webservice des Bundesamts für Statistik
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-04