Vývojář Přehled registrů

Přehled registrů

Registry jsou body rozšíření Laravixu — statické třídy v Laravix\Cms\Support, kam jádro, vaše aplikace i pluginy registrují content typy, pole, bloky, nastavení, routy a další. Tohle je kompletní reference s minimálním příkladem ke každému.

ContentTypeRegistry

use Laravix\Cms\Support\{ContentTypeDefinition, ContentTypeRegistry};

ContentTypeRegistry::register(
    ContentTypeDefinition::make('project')
        ->label('Projekt')->pluralLabel('Projekty')
        ->linkableInNavigation()        // nabízet v editoru menu
        ->builder(false)                // bez záložky vizuálního builderu
        ->routePrefix('projects')       // veřejné URL /projects/{slug}
        ->taxonomyTypes(['category']),  // povolené typy taxonomií
);

Čtení: all(), keys(), has($key), find($key), default() (první registrovaný typ), options(), navigationLinkableKeys(). Podrobnosti: Vlastní content typy.

TaxonomyTypeRegistry

use Laravix\Cms\Support\TaxonomyTypeRegistry;

TaxonomyTypeRegistry::register('project-category', 'Kategorie projektu');

Druhý argument je popisek (prostý řetězec nebo překladový klíč). Čtení: options(), label($key).

FieldRegistry

use Laravix\Cms\Enums\FieldType;
use Laravix\Cms\Support\{FieldDefinition, FieldRegistry};

FieldRegistry::content([...]);                  // pole pro všechny typy obsahu
FieldRegistry::contentType('project', [
    FieldDefinition::make('year')
        ->type(FieldType::NUMBER)
        ->label('Rok')
        ->group('Detaily')
        ->hint('Čtyři číslice.')
        ->config([]),
]);

Čtení: forContentType($type, $siteId) slévá pole z kódu s poli definovanými v administraci; grouped() je seskupí pro sekce formuláře. Podrobnosti: Vlastní pole.

SettingRegistry

Přidává pole na obrazovku Nastavení; hodnoty se ukládají per web a do šablon jdou přes $settings:

use Laravix\Cms\Enums\FieldType;
use Laravix\Cms\Support\{SettingDefinition, SettingRegistry};

SettingRegistry::register([
    SettingDefinition::make('analytics_id')
        ->label('Analytics ID')
        ->group('laravix::settings.tabs.general')   // volba záložky
        ->hint('Measurement ID, např. G-XXXX.')
        ->required()
        ->default(null)
        ->config([]),
]);

Typy odpovídají FieldType (text, textarea, image, url, boolean…). Záložka v administraci se odvozuje z překladového klíče group — použijte core skupiny (laravix::settings.tabs.general, .seo, .social), nebo zaregistrujte vlastní klíč skupiny.

BlockRegistry

use Laravix\Cms\Support\{BlockDefinition, BlockRegistry};

BlockRegistry::register(MyBlock::definition());

Definice s canvasHtml se objeví ve vizuálním builderu; definice se schema se editují jako strukturovaná data. Podrobnosti: Vlastní bloky.

Jádro registruje header a footer. Registrací další dáte webům extra spravované menu (objeví se jako repeater na obrazovce Navigace a v JSON navigations webu):

use Laravix\Cms\Support\{NavigationDefinition, NavigationRegistry};

NavigationRegistry::register(
    NavigationDefinition::make('sidebar')->label('Boční navigace'),
);

RouteRegistry

Řadí do fronty closures s registrací rout; Laravix je spustí uvnitř web middleware skupiny po bootu aplikace, před CMS catch-all routou:

use Illuminate\Support\Facades\Route;
use Laravix\Cms\Support\RouteRegistry;

RouteRegistry::register(function () {
    Route::get('/projects', ProjectIndexController::class)->name('projects.index');
    Route::get('/projects/{slug}', ProjectShowController::class)->name('projects.show');
});

HydratorRegistry

Hydratory post-processují HTML vizuálního builderu při každém vykreslení — changelog plugin jedním injektuje data releasů do zástupného bloku. Implementujte rozhraní BlockHydrator:

use Laravix\Cms\Models\{Content, Site};
use Laravix\Cms\Support\{BlockHydrator, HydratorRegistry};

class ProjectsHydrator implements BlockHydrator
{
    public function hydrate(string $html, Site $site, Content $content): string
    {
        return str_replace('<!--projects-->', view('my-plugin::list')->render(), $html);
    }
}

HydratorRegistry::register(ProjectsHydrator::class);

Hydratory se resolvují z kontejneru, takže funguje constructor injection.

FilamentPluginRegistry

Předává admin panelu plnohodnotné Filament pluginy — resources, pages, widgety, render hooky. Musí se volat v register() provideru:

use Laravix\Cms\Support\FilamentPluginRegistry;

FilamentPluginRegistry::register(MyFilamentPlugin::make());

MyFilamentPlugin je standardní implementace Filament\Contracts\Plugin — hotový příklad je třída ChangelogPlugin changelog pluginu.

Související články

Laravix Documentation · 13.07.2026
Star on GitHub