定制 ecolabor/filament-swiss-uid-search 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ecolabor/filament-swiss-uid-search

Composer 安装命令:

composer require ecolabor/filament-swiss-uid-search

包简介

Filament v4 plugin for searching Swiss companies via the UID (Unternehmens-Identifikationsnummer) webservice

README 文档

README

Tests Latest Version on Packagist Total Downloads PHP Version License

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 primary Farbe
  • Dark Mode - Vollständige Unterstützung für Light/Dark Mode
  • Status Colors - success, danger, warning fü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/filament-swiss-uid-search 适用场景与选型建议

ecolabor/filament-swiss-uid-search 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 01 月 04 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「search」 「laravel」 「identification」 「enterprise」 「company」 「UID」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 ecolabor/filament-swiss-uid-search 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 ecolabor/filament-swiss-uid-search 我们能提供哪些服务?
定制开发 / 二次开发

基于 ecolabor/filament-swiss-uid-search 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 23
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04