完整的 CMS 系统,带有易于使用的 FilamentPHP 页面构建器和主题管理器
composer require tomatophp/filament-cms
安装软件包后请运行此命令
注意如果您需要自定义某些功能,请不要使用此命令并按照后续步骤操作,因为此步骤运行迁移,并且您需要在运行迁移之前自定义配置。
php artisan filament-cms:install
最后在/app/Providers/Filament/AdminPanelProvider.php
上注册插件
-> plugin (
TomatoPHP FilamentCms FilamentCMSPlugin :: make ()
-> useCategory ()
-> usePost ()
-> allowExport ()
-> allowImport ()
)
现在请发布并迁移媒体表
php artisan vendor:publish --provider= " SpatieMediaLibraryMediaLibraryServiceProvider " --tag= " medialibrary-migrations "
php artisan migrate
您可以通过将YOUTUBE_KEY
添加到.env
来允许从 YouTube 导入内容
YOUTUBE_KEY = YOUR_YOUTUBE_KEY
现在在您的面板提供程序/app/Providers/Filament/AdminPanelProvider.php
上添加此方法
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> allowYoutubeImport ())
首先,您需要安装dusk
作为主软件包以允许此功能
composer require laravel/dusk
现在安装黄昏驱动程序
php artisan dusk:install
现在您需要允许在面板提供程序上导入 behanace /app/Providers/Filament/AdminPanelProvider.php
添加此方法
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> allowBehanceImport ())
您可以通过在 AppServiceProvider boot()
方法上使用 Facade 方法将自定义类型添加到 CMS
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 ' )
]);
}
您可以通过在 AppServiceProvider boot()
方法上使用 Facade 方法来添加更多作者类型
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)
]);
}
主题管理器是使用 Laravel 模块构建的,因此您需要先安装它
注意:如果您安装tomatophp/filament-plugins
则不需要安装nwidart/laravel-modules
因为它已经安装了
composer require nwidart/laravel-modules
现在在你的composer.json
中添加到psr-4
自动加载
{
"autoload" : {
"psr-4" : {
"App \ " : " app/ " ,
"Modules \ " : " Modules/ "
}
}
}
现在运行此命令来自动加载主题
composer dump-autoload
并且您需要另一个包来缓存并返回主题作为我们使用sushi
包的模型
composer require calebporzio/sushi
现在在你的配置filament-cms
上
return [
/*
* ---------------------------------------------------
* Allow Features
* ---------------------------------------------------
*/
" features " => [
" theme-manager " => true ,
],
];
现在您需要激活设置表
php artisan vendor:publish --provider= " SpatieLaravelSettingsLaravelSettingsServiceProvider " --tag= " migrations "
php artisan migrate
现在您可以使用主题管理器来管理应用程序上的多个前端主题,在您的面板提供程序/app/Providers/Filament/AdminPanelProvider.php
上添加此方法
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> useThemeManager ())
现在您可以访问/admin/themes
来管理您的主题,并且您可以使用此命令行创建新主题
php artisan filament-cms:theme
您将在Modules
目录中找到一个带有自定义module.json
文件的新模块
页面构建器可以非常轻松地自定义您的页面并生成自动加载的页面来使用Sections
构建您的网站要开始使用它,您需要在面板提供程序/app/Providers/Filament/AdminPanelProvider.php
上添加此方法
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> usePageBuilder ())
您需要做的第一件事是在 AppServiceProvider boot()
方法上创建一个部分
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 ' ),
])
]);
注意:节键必须是唯一的
注册您的部分后,您可以开始使用页面构建器,您需要为您的页面创建一个新路由,如下所示
use Illuminate Support Facades Route ;
Route :: get ( ' / ' , function () {
$ page = load_page ( ' / ' );
return view ( ' welcome ' , compact ( ' page ' ));
});
如您所见,您需要使用load_page
帮助程序来加载页面并将其传递到您的视图,此方法通过slug
检查页面是否存在并返回页面数据,如果页面不存在或已删除,它将恢复它或创建它你
在您的welcome.blade.php
文件中,您需要使用此刀片组件
< x-tomato-builder-toolbar :page =" $page " allow-layout />
如果您需要使用Filament Layout来轻松激活Livewire / Tailwind Style,请使用allow-layout
属性如果您需要在没有任何样式的情况下使用它,您可以在没有此属性的情况下使用它
现在,如果你打开页面,你会发现这样的构建器视图
您可以通过在提供程序上使用此方法向表单构建器添加更多字段。
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 ' ),
]);
创建表单后,您可以像这样通过key
使用它
use TomatoPHP FilamentCms Services FilamentCMSFormBuilder ;
FilamentCMSFormBuilder :: make ( ' xvssd ' )-> build ()
您可以通过在您的提供商上使用此方法,使用表单请求来提交表单数据。
use TomatoPHP FilamentCms Services FilamentCMSFormBuilder ;
FilamentCMSFormBuilder :: make ( ' xvssd ' )-> send ( $ data )
您可以使用盾牌来保护您的资源并通过先安装它来允许用户角色
composer require bezhansalleh/filament-shield
将 SpatiePermissionTraitsHasRoles 特征添加到您的用户模型中:
use Illuminate Foundation Auth User as Authenticatable ;
use Spatie Permission Traits HasRoles ;
class User extends Authenticatable
{
use HasRoles ;
// ...
}
发布配置文件然后设置您的配置:
-> plugin ( BezhanSalleh FilamentShield FilamentShieldPlugin :: make ())
现在运行以下命令来安装shield:
php artisan shield:install
现在我们可以发布包资源了。
php artisan vendor:publish --tag= " filament-users-config "
现在你需要在插件选项中允许它
-> plugin ( TomatoPHP FilamentCms FilamentCMSPlugin :: make ()-> allowShield ())
欲了解更多信息,请查看灯丝屏蔽
有时您需要在帖子中添加一些自定义逻辑,例如发送电子邮件或通知用户,您可以使用帖子事件来执行此操作,支持的事件是:
TomatoPHP FilamentCms Events PostCreated ::class
TomatoPHP FilamentCms Events PostUpdated ::class
TomatoPHP FilamentCms Events PostDeleted ::class
您可以使用此命令发布配置文件
php artisan vendor:publish --tag= " filament-cms-config "
您可以使用此命令发布视图文件
php artisan vendor:publish --tag= " filament-cms-views "
您可以使用此命令发布语言文件
php artisan vendor:publish --tag= " filament-cms-lang "
您可以使用此命令发布迁移文件
php artisan vendor:publish --tag= " filament-cms-migrations "
查看我们很棒的 TomatoPHP