PHP code example of fnx-software / filament-astrotomic
1. Go to this page and download the library: Download fnx-software/filament-astrotomic library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
fnx-software / filament-astrotomic example snippets
// app/Providers/Filament/AdminPanelProvider.php
use Filament\Panel;
use Fnxsoftware\FilamentAstrotomic\FilamentAstrotomicPlugin;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugins([
FilamentAstrotomicPlugin::make(),
]);
}
// app/Models/Post.php
use Astrotomic\Translatable\Contracts\Translatable as TranslatableContract;
use Astrotomic\Translatable\Translatable;
use Illuminate\Database\Eloquent\Model;
class Post extends Model implements TranslatableContract
{
use Translatable;
public array $translatedAttributes = [
'title',
'content',
];
protected $fillable = [
'author_id',
];
}
// app/Filament/Resources/PostResource.php
use Filament\Resources\Resource;
use Fnxsoftware\FilamentAstrotomic\Resources\Concerns\ResourceTranslatable;
class PostResource extends Resource
{
use ResourceTranslatable;
// ...
}
// app/Filament/Resources/PostResource/Pages/ListPosts.php
use Filament\Resources\Pages\ListRecords;
use Fnxsoftware\FilamentAstrotomic\Resources\Pages\ListTranslatable;
class ListPosts extends ListRecords
{
use ListTranslatable;
// ...
}
// app/Filament/Resources/PostResource/Pages/CreatePost.php
use Filament\Resources\Pages\CreateRecord;
use Fnxsoftware\FilamentAstrotomic\Resources\Pages\CreateTranslatable;
class CreatePost extends CreateRecord
{
use CreateTranslatable;
// ...
}
// app/Filament/Resources/PostResource/Pages/EditPost.php
use Filament\Resources\Pages\EditRecord;
use Fnxsoftware\FilamentAstrotomic\Resources\Pages\EditTranslatable;
class EditPost extends EditRecord
{
use EditTranslatable;
// ...
}
// app/Filament/Resources/PostResource/Pages/ViewPost.php
use Filament\Resources\Pages\ViewRecord;
use Fnxsoftware\FilamentAstrotomic\Resources\Pages\ViewTranslatable;
class ViewPost extends ViewRecord
{
use ViewTranslatable;
// ...
}
use Filament\Forms\Components\RichEditor;
use Filament\Forms\Components\TextInput;
use Fnxsoftware\FilamentAstrotomic\Schemas\Components\TranslatableTabs;
use Fnxsoftware\FilamentAstrotomic\TranslatableTab;
TranslatableTabs::make()
->localeTabSchema(fn (TranslatableTab $tab): array => [
TextInput::make($tab->makeName('title'))
->
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Fnxsoftware\FilamentAstrotomic\Schemas\Components\TranslatableTabs;
use Fnxsoftware\FilamentAstrotomic\TranslatableTab;
TranslatableTabs::make()
->localeTabSchema(fn (TranslatableTab $tab): array => [
TextInput::make($tab->makeName('title'))
->label($tab->makePrefixLabel('Title')),
Textarea::make($tab->makeName('description'))
->label($tab->makeSuffixLabel('Description')),
])
use Filament\Forms\Components\TextInput;
use Fnxsoftware\FilamentAstrotomic\Schemas\Components\TranslatableTabs;
use Fnxsoftware\FilamentAstrotomic\TranslatableTab;
TranslatableTabs::make()
->customLocales(['ar', 'en', 'fr', 'pt'])
->localeTabSchema(fn (TranslatableTab $tab): array => [
TextInput::make($tab->makeName('label'))
->
use Fnxsoftware\FilamentAstrotomic\Schemas\Tables\TranslatableSelect;
TranslatableSelect::make('country_id')
->translatableRelationship('country', 'name')
->searchable()
->preload()
->label('Country')
->
// In your List page, for example ListPosts.php
use Filament\Actions\CreateAction;
use Fnxsoftware\FilamentAstrotomic\Actions\LocaleSwitcher;
protected function getHeaderActions(): array
{
return [
CreateAction::make(),
LocaleSwitcher::make(),
];
}
use Filament\Tables\Table;
use Fnxsoftware\FilamentAstrotomic\Tables\Columns\TranslatableColumn;
public static function table(Table $table): Table
{
return $table
->columns([
TranslatableColumn::make('title')
->searchable()
->sortable(),
]);
}
use Filament\Infolists\Infolist;
use Fnxsoftware\FilamentAstrotomic\Infolists\Components\TranslatableEntry;
public static function infolist(Infolist $infolist): Infolist
{
return $infolist
->schema([
TranslatableEntry::make('title'),
TranslatableEntry::make('content'),
]);
}
use Fnxsoftware\FilamentAstrotomic\FilamentAstrotomicPlugin;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugin(
FilamentAstrotomicPlugin::make()
->force()
);
}