tomatophp / laravel-tomato
由 TomatoPHP 构建的 Laravel 基础助手,用于请求和控制器
Requires
- php: ^8.1|^8.2
- spatie/macroable: ^2.0
This package is auto-updated.
Last update: 2024-09-10 16:18:56 UTC
README
Laravel Tomato
由 TomatoPHP 构建的 Laravel 基础助手,用于请求和控制器
安装
composer require tomatophp/laravel-tomato
功能
-
Tomato::menu()
在您的应用程序中注入和处理菜单 -
Tomato::widget()
在您的应用程序中注入和处理小部件 -
Tomato::slot()
在您的应用程序中注入和处理插槽 -
Tomato::request()
处理和验证请求 -
Tomato::response()
处理 API 响应
用法
您可以通过 Facade 类或使用助手函数来使用这些助手
use TomatoPHP\LaravelTomato\Facades\Tomato::register();
或只是
tomato()::register();
注册组件
您可以在服务提供者的 boot()
方法中注册您的菜单、小部件或插槽
Tomato::register([ Menu::make() ->group(__('CRM')) ->label(__('Name')) ->route('home') ->icon('home'), Widget::make() ->group(__('CRM')) ->label(__('Name')) ->counter(100) ->icon("bx bx-user"), Slot::make() ->position(Positions::dashboardTop) ->view('dashboard-top'), ]);
您可以注册任何类型的组件,我们将为您检查和处理它
所有组件都有可宏化的方法,可以添加更多功能。
获取组件
您可以像这样获取您的组件
Tomato::menu()->get(); Tomato::widget()->get(); Tomato::slot()->get();
它将返回一个注册组件的数组供您使用
请求
您可以使用请求助手来处理和验证您的请求,如下所示
return Tomato::request()->index( request: request(), model: App\Models\User::class, );
🔁 索引请求
此方法根据请求类型返回视图或 JsonResponse,我们通过检查路由是否有 auth:sanctum
中间件来获取请求类型。
此方法接受一些参数
request
请求对象model
您要获取的模型view
您要返回的视图table
您要使用的表格类data
您要传递给视图的数据api
如果您想返回 JsonResponseresource
资源类,用于资源化返回的数据query
如果您想向模型添加一些查询filters
如果您想向表格添加一些过滤器
public function index(Request $request): View|JsonResponse { return Tomato::index( request: $request, //Required model: $this->model, //Required view: 'users.index', table: \App\Tables\UserTable::class, data: [ 'name' => 'john doe', ], api: true, resource: UserResource::class, query: User::query()->where('is_activated',true), filters: [ 'is_activated', ], ); }
🔁 JSON 请求
此方法仅返回模型的 json 响应,以便更容易使用 x-splade-select
或 x-tomato-admin-select
访问它
此方法接受一些参数
request
请求对象model
您要获取的模型data
您要传递给视图的数据paginate
如果您想分页响应query
如果您想向模型添加一些查询filters
如果您想向表格添加一些过滤器
public function api(Request $request): JsonResponse { return Tomato::json( request: $request, //Required model: \App\Models\User::class, //Required data: [ 'name' => 'john doe', ], paginate: 10, query: User::query()->where('is_activated',true), filters: [ 'is_activated', ], ); }
🔁 获取请求
此方法根据请求类型返回视图或 JsonResponse,我们通过检查路由是否有 auth:sanctum
中间件来获取请求类型。
此方法接受一些参数
model
您要获取的模型view
您要返回的视图data
您要传递给视图的数据hasMedia
如果您想获取模型的媒体collection [array]
您要获取的媒体集合作为数组,如果是多选则取 true,如果是单选则取 falseattach [array]
将一些数据附加到模型上api
如果您想返回 JsonResponseresource
资源类,用于资源化返回的数据query
如果您想向模型添加一些查询
public function show(\App\Models\User $model): View|JsonResponse { return Tomato::get( model: $model, //Required view: 'users.show', //Required data: [ 'name' => 'john doe', ], hasMedia: true, collection: [ 'avatar' => false, 'gallery' => true ], attach: [ 'roles' => $model->roles, ], api: true, resource: UserResource::class, query: User::query()->where('is_activated',true) ); }
🔁 存储请求
此方法根据请求类型返回 RedirectResponse 或 JsonResponse,我们通过检查路由是否有 auth:sanctum
中间件来获取请求类型。
此方法接受一些参数
request
请求对象model
您要获取的模型validation
您想使用的验证规则message
您想与响应一起返回的消息validationError
如果验证失败,您想返回的消息redirect
您想重定向到的路由hasMedia
如果您想获取模型的媒体collection [array]
您要获取的媒体集合作为数组,如果是多选则取 true,如果是单选则取 falseapi
如果您想返回 JsonResponse
public function store(Request $request): RedirectResponse|JsonResponse { $response = Tomato::store( request: $request, //Required model: \App\Models\User::class, //Required validation: [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', ], message: __('User created successfully'), validationError: __('Error When Try To Store User'), redirect: 'admin.users.index', hasMedia: true, collection: [ 'avatar' => false, 'gallery' => true ], api: true, ); if($response instanceof JsonResponse){ return $response; } return $response->redirect; }
🔁 更新请求
此方法根据请求类型返回 RedirectResponse 或 JsonResponse,我们通过检查路由是否有 auth:sanctum
中间件来获取请求类型。
此方法接受一些参数
request
请求对象model
您要获取的模型validation
您想使用的验证规则message
您想与响应一起返回的消息validationError
如果验证失败,您想返回的消息redirect
您想重定向到的路由hasMedia
如果您想获取模型的媒体collection [array]
您要获取的媒体集合作为数组,如果是多选则取 true,如果是单选则取 falseapi
如果您想返回 JsonResponse
public function update(Request $request, \App\Models\User $model): RedirectResponse|JsonResponse { $response = Tomato::update( request: $request, //Required model: $model, //Required validation: [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', ], message: __('User updated successfully'), redirect: 'admin.users.index', hasMedia: true, collection: [ 'avatar' => false, 'gallery' => true ], api: true, ); if($response instanceof JsonResponse){ return $response; } return $response->redirect; }
🔁 删除请求
此方法根据请求类型返回 RedirectResponse 或 JsonResponse,我们通过检查路由是否有 auth:sanctum
中间件来获取请求类型。
此方法接受一些参数
model
您要获取的模型message
您想与响应一起返回的消息redirect
您想重定向到的路由api
如果您想返回 JsonResponse
public function destroy(\App\Models\User $model): RedirectResponse|JsonResponse { $response = Tomato::destroy( model: $model, //Required message: __('User deleted successfully'), //Required redirect: 'admin.users.index', ); if($response instanceof JsonResponse){ return $response; } return $response->redirect; }
带有媒体的请求
要使媒体处理工作,您必须安装 spatie/laravel-medialibrary
包并运行迁移
composer require spatie/laravel-medialibrary php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations" php artisan migrate
并且您的模型必须使用 HasMedia
特性
use Spatie\MediaLibrary\HasMedia; use Spatie\MediaLibrary\InteractsWithMedia; class User extends Model implements HasMedia { use InteractsWithMedia; }
处理警报
如果您使用 Splade,我们为您提供了处理 Toaster 的方法,如果安装了 yoeunes/toastr
包,它也将正常工作。或者,您可以从会话中获取 toaster
变量以获取闪存消息。
支持
您可以加入我们的 Discord 服务器以获得支持 TomatoPHP
变更日志
请参阅 变更日志 获取有关最近更改的更多信息。
安全
请参阅 安全信息 获取有关安全方面的更多信息。
致谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。