Vollständiges CMS-System mit benutzerfreundlichem Seitenersteller und Theme-Manager für FilamentPHP
composer require tomatophp/filament-cms
Führen Sie nach der Installation Ihres Pakets bitte diesen Befehl aus
HINWEIS: Wenn Sie eine Funktion anpassen müssen, verwenden Sie bitte nicht diesen Befehl und befolgen Sie die nächsten Schritte, da dieser Schritt die Migration ausführt und Sie vor der Migration eine benutzerdefinierte Konfiguration vornehmen müssen.
php artisan filament-cms:install
Registrieren Sie schließlich das Plugin unter /app/Providers/Filament/AdminPanelProvider.php
-> plugin (
TomatoPHP FilamentCms FilamentCMSPlugin :: make ()
-> useCategory ()
-> usePost ()
-> allowExport ()
-> allowImport ()
)
Jetzt veröffentlichen und migrieren Sie bitte die Medientabelle
php artisan vendor:publish --provider= " SpatieMediaLibraryMediaLibraryServiceProvider " --tag= " medialibrary-migrations "
php artisan migrate
Sie können den Import von Inhalten von YouTube zulassen, indem Sie YOUTUBE_KEY
zu Ihrer .env
hinzufügen
YOUTUBE_KEY = YOUR_YOUTUBE_KEY
Fügen Sie nun bei Ihrem Panel-Anbieter /app/Providers/Filament/AdminPanelProvider.php
diese Methode hinzu
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> allowYoutubeImport ())
Um diese Funktion nutzen zu können, müssen Sie zunächst dusk
als Hauptpaket installieren
composer require laravel/dusk
Installieren Sie jetzt den Dusk-Treiber
php artisan dusk:install
Jetzt müssen Sie den Behanace-Import bei Ihrem Panel-Anbieter /app/Providers/Filament/AdminPanelProvider.php
zulassen und diese Methode hinzufügen
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> allowBehanceImport ())
Sie können dem CMS einen benutzerdefinierten Typ hinzufügen, indem Sie die Facade-Methode in Ihrer AppServiceProvider- boot()
-Methode verwenden
use TomatoPHP FilamentCms Facades FilamentCMS ;
use TomatoPHP FilamentCms Services Contracts CmsType ;
public function boot ()
{
FilamentCMS :: types ()-> register ([
CmsType :: make ( ' building ' )
-> label ( ' Buildings ' )
-> icon ( ' heroicon-o-home ' )
-> color ( ' danger ' )
]);
}
Sie können weitere Autorentypen hinzufügen, indem Sie die Facade-Methode in Ihrer AppServiceProvider- boot()
-Methode verwenden
use TomatoPHP FilamentCms Facades FilamentCMS ;
use TomatoPHP FilamentCms Services Contracts CmsAuthor ;
public function boot ()
{
FilamentCMS :: authors ()-> register ([
CmsAuthor :: make ( ' Admin ' )
-> model ( App Models User ::class)
]);
}
Der Theme-Manager wurde mit Laravel-Modulen erstellt, daher müssen Sie ihn zuerst installieren
Hinweis: Wenn Sie tomatophp/filament-plugins
installieren, müssen Sie nwidart/laravel-modules
nicht installieren, da es bereits installiert ist
composer require nwidart/laravel-modules
Jetzt auf Ihrer composer.json
zum automatischen Laden psr-4
hinzufügen
{
"autoload" : {
"psr-4" : {
"App \ " : " app/ " ,
"Modules \ " : " Modules/ "
}
}
}
Führen Sie nun diesen Befehl aus, um Designs automatisch zu laden
composer dump-autoload
und Sie benötigen ein anderes Paket zum Zwischenspeichern und Zurückgeben von Themen. Als Modell verwenden wir sushi
-Paket
composer require calebporzio/sushi
Jetzt auf Ihrer Konfiguration filament-cms
return [
/*
* ---------------------------------------------------
* Allow Features
* ---------------------------------------------------
*/
" features " => [
" theme-manager " => true ,
],
];
Jetzt müssen Sie die Einstellungstabelle aktivieren
php artisan vendor:publish --provider= " SpatieLaravelSettingsLaravelSettingsServiceProvider " --tag= " migrations "
php artisan migrate
Jetzt können Sie den Theme-Manager verwenden, um Multi-Frontend-Themes in Ihrer App zu verwalten. Fügen Sie diese Methode bei Ihrem Panel-Anbieter /app/Providers/Filament/AdminPanelProvider.php
hinzu
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> useThemeManager ())
Jetzt können Sie auf /admin/themes
zugreifen, um Ihre Themes zu verwalten, und Sie können über diese Befehlszeile ein neues Theme erstellen
php artisan filament-cms:theme
Sie finden ein neues Modul mit der benutzerdefinierten module.json
-Datei in Ihrem Modules
-Verzeichnis
Mit dem Seitenersteller können Sie Ihre Seite ganz einfach anpassen und automatisch geladene Seiten generieren, um Ihre Website mithilfe von Sections
zu erstellen. Um sie verwenden zu können, müssen Sie diese Methode zu Ihrem Panel-Anbieter /app/Providers/Filament/AdminPanelProvider.php
hinzufügen
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> usePageBuilder ())
Als Erstes müssen Sie einen Abschnitt in Ihrer AppServiceProvider- boot()
-Methode erstellen
use TomatoPHP FilamentCms Services Contracts Section ;
use TomatoPHP FilamentCms Facades FilamentCMS ;
use Filament Forms Components TextInput ;
FilamentCMS :: themes ()-> register ([
Section :: make ( ' hero ' )
-> label ( ' Hero Section ' )
-> view ( ' sections.pages.hero ' )
-> form ([
TextInput :: make ( ' title ' )
-> label ( ' title ' ),
TextInput :: make ( ' description ' )
-> label ( ' description ' ),
TextInput :: make ( ' url ' )
-> url ()
-> label ( ' url ' ),
TextInput :: make ( ' button ' )
-> label ( ' button ' ),
])
]);
HINWEIS: Der Abschnittsschlüssel muss eindeutig sein
Nachdem Sie Ihren Abschnitt registriert haben, können Sie den Seitenersteller verwenden. Sie müssen eine neue Route für Ihre Seite wie folgt erstellen
use Illuminate Support Facades Route ;
Route :: get ( ' / ' , function () {
$ page = load_page ( ' / ' );
return view ( ' welcome ' , compact ( ' page ' ));
});
Wie Sie sehen, müssen Sie den load_page
Helfer verwenden, um Ihre Seite zu laden und an Ihre Ansicht zu übergeben. Diese Methode prüft per slug
ob die Seite existiert, und gibt die Seitendaten zurück. Wenn die Seite nicht existiert oder gelöscht wird, wird sie wiederhergestellt oder erstellt Du
In Ihrer Datei welcome.blade.php
müssen Sie diese Blade-Komponente verwenden
< x-tomato-builder-toolbar :page =" $page " allow-layout />
Wenn Sie das Filament-Layout verwenden müssen, um die Aktivierung des Livewire-/Tailwind-Stils zu vereinfachen, verwenden Sie das Attribut allow-layout
Wenn Sie es ohne Stil verwenden müssen, können Sie es ohne dieses Attribut verwenden
Wenn Sie nun Ihre Seite öffnen, finden Sie die Builder-Ansicht wie folgt
Sie können dem Formularersteller weitere Felder hinzufügen, indem Sie diese Methode bei Ihrem Anbieter verwenden.
use TomatoPHP FilamentCms Services FilamentCMSFormFields ;
use TomatoPHP FilamentCms Services Contracts CmsFormFieldType ;
FilamentCMSFormFields :: register ([
CmsFormFieldType :: make ( ' code ' )
-> className ( CodeEditor ::class)
-> color ( ' warning ' )
-> icon ( ' heroicon-s-code-bracket-square ' )
-> label ( ' Code Editor ' ),
]);
Nachdem Sie Ihr Formular erstellt haben, können Sie es per key
wie folgt verwenden
use TomatoPHP FilamentCms Services FilamentCMSFormBuilder ;
FilamentCMSFormBuilder :: make ( ' xvssd ' )-> build ()
Sie können Formularanfragen verwenden, um Ihre Formulardaten zu übermitteln, indem Sie diese Methode bei Ihrem Anbieter verwenden.
use TomatoPHP FilamentCms Services FilamentCMSFormBuilder ;
FilamentCMSFormBuilder :: make ( ' xvssd ' )-> send ( $ data )
Sie können den Schutz verwenden, um Ihre Ressource zu schützen und Benutzerrollen zuzulassen, indem Sie ihn zuerst installieren
composer require bezhansalleh/filament-shield
Fügen Sie die Eigenschaft SpatiePermissionTraitsHasRoles zu Ihren Benutzermodellen hinzu:
use Illuminate Foundation Auth User as Authenticatable ;
use Spatie Permission Traits HasRoles ;
class User extends Authenticatable
{
use HasRoles ;
// ...
}
Veröffentlichen Sie die Konfigurationsdatei und richten Sie dann Ihre Konfiguration ein:
-> plugin ( BezhanSalleh FilamentShield FilamentShieldPlugin :: make ())
Führen Sie nun den folgenden Befehl aus, um Shield zu installieren:
php artisan shield:install
Jetzt können wir die Paketressourcen veröffentlichen.
php artisan vendor:publish --tag= " filament-users-config "
Jetzt müssen Sie es in den Plugin-Optionen zulassen
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> allowShield ())
Weitere Informationen finden Sie im Filament Shield
Manchmal müssen Sie Ihrem Beitrag eine benutzerdefinierte Logik hinzufügen, z. B. E-Mail senden oder Benutzer benachrichtigen. Dazu können Sie die Beitragsereignisse verwenden. Die unterstützten Ereignisse sind:
TomatoPHP FilamentCms Events PostCreated ::class
TomatoPHP FilamentCms Events PostUpdated ::class
TomatoPHP FilamentCms Events PostDeleted ::class
Mit diesem Befehl können Sie die Konfigurationsdatei veröffentlichen
php artisan vendor:publish --tag= " filament-cms-config "
Mit diesem Befehl können Sie die Ansichtsdatei veröffentlichen
php artisan vendor:publish --tag= " filament-cms-views "
Mit diesem Befehl können Sie die Sprachdatei veröffentlichen
php artisan vendor:publish --tag= " filament-cms-lang "
Mit diesem Befehl können Sie die Migrationsdatei veröffentlichen
php artisan vendor:publish --tag= " filament-cms-migrations "
Testen Sie unser Awesome TomatoPHP