Подпись регистрации в Filament
Давайте зададим подпись регистрации. Без настройки меню повторяет имя модели. Активные откроются /admin/posts/active с понятной подписью.
На цепочке make
вызовем navigationLabel.
Дополнительно на ресурсе
переопределим
getNavigationLabel
и прочитаем настройку
через getConfiguration:
<?php
namespace App\Providers\Filament;
use App\Filament\Resources\Posts\PostResource;
use Filament\Panel;
use Filament\PanelProvider;
class AdminPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
->default()
->id('admin')
->path('admin')
->login()
->resources([
PostResource::make('active')
->navigationLabel('Active'),
PostResource::make('archived')
->archived()
->navigationLabel('Archive'),
]);
}
}
?>
В PostResource.php
метод getNavigationLabel
вернёт строку из настройки,
если она задана:
<?php
namespace App\Filament\Resources\Posts;
use App\Models\Post;
use Filament\Resources\Resource;
use Illuminate\Database\Eloquent\Builder;
class PostResource extends Resource
{
protected static ?string $model = Post::class;
protected static ?string $configurationClass = PostResourceConfiguration::class;
public static function getNavigationLabel(): string
{
return static::getConfiguration()->getNavigationLabel()
?? parent::getNavigationLabel();
}
public static function getEloquentQuery(): Builder
{
$query = parent::getEloquentQuery();
if (static::getConfiguration()->isArchived()) {
return $query->where('is_archived', true);
}
return $query->where('is_archived', false);
}
}
?>
Назовите пункты меню «Активные» и «Архив», а не именем модели.