norman-huth / nova-resource-card
一个 Laravel Nova 卡片。
Requires
- php: ^8.0
- laravel/nova: ^4.0
This package is auto-updated.
Last update: 2024-09-08 21:31:49 UTC
README
使用此包,您可以将 Nova 资源索引用作卡片。
(例如在仪表板或其他 Nova 资源中)
限制
- 无搜索
- 无分页
- 无操作
- 无卡片
来自 example-app-nvpRt7 的示例
此包将在一段时间内扩展。关注此包以获取更新。
对于建议和愿望,请 创建一个问题。
安装
composer require norman-huth/nova-resource-card
用法
以下用法示例使用 Laravel Nova 用户资源类作为示例。
将 Nova 资源卡片添加到仪表板
use NormanHuth\NovaResourceCard\NovaResourceCard; class Main extends Dashboard { /** * Get the cards for the dashboard. * * @return array */ public function cards(): array { return [ new NovaResourceCard(\App\Nova\Resources\User::class) ]; } }
将 Nova 资源卡片添加到其他 Nova 资源
use NormanHuth\NovaResourceCard\NovaResourceCard; class User extends Resource { /** * Get the cards available for the request. * * @param NovaRequest $request * @return array */ public function cards(NovaRequest $request): array { return [ new NovaResourceCard(\App\Nova\Resources\User::class), ]; } }
卡片方法
激活资源索引的页脚链接
使用 setFooterLinkLabel
方法。
(new NovaResourceCard(\App\Nova\Resources\User::class))->setFooterLinkLabel(__('To All Users'))
使用其他 Nova 资源作为页脚链接目标
使用 setFooterLinkResource
方法。
(new NovaResourceCard(\App\Nova\Resources\User::class)) ->setFooterLinkLabel(__('Go To Orders')) ->setFooterLinkResource(\App\Nova\Resources\Order::class)
使用外部 URL 作为页脚链接
使用 setFooterLinkExternalUrl
方法。
(new NovaResourceCard(\App\Nova\Resources\User::class)) ->setFooterLinkLabel(__('Visit Website')) ->setFooterLinkExternalUrl('https://huth.it')
设置详细链接资源
默认情况下,此包通过 Resource::$model
生成详细链接,因此您可以在不费任何力气的情况下使用多个资源来表示一个模型。
使用 setDetailLinkResource
方法。
(new NovaResourceCard(\App\Nova\Resources\User::class)) ->setDetailLinkResource(\App\Nova\Resources\Order::class)
设置卡片宽度
使用 width
方法。
#[ExpectedValues(values: ['full', '1/3', '1/2', '1/4', '2/3', '3/4'])]
(new NovaResourceCard(\App\Nova\Resources\User::class))->width('1/2')
向卡片元素添加类
使用 addCardClasses
方法。
(new NovaResourceCard(\App\Nova\Resources\User::class))->addCardClasses(['bg-white', 'dark:bg-gray-800']) (new NovaResourceCard(\App\Nova\Resources\User::class))->addCardClasses('bg-white dark:bg-gray-800')
向资源标题添加类
使用 addResourceHeadingClasses
方法。
(new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceHeadingClasses(['bg-white', 'dark:bg-gray-800']) (new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceHeadingClasses('bg-white dark:bg-gray-800')
向资源索引错误对话框添加类
使用 addResourceIndexErrorDialogClasses
方法。
(new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceIndexErrorDialogClasses(['my-class', 'p-2']) (new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceIndexErrorDialogClasses('my-class p-2'')
向资源索引空对话框添加类
使用 addResourceIndexEmptyDialogClasses
方法。
(new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceIndexEmptyDialogClasses(['my-class', 'p-2']) (new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceIndexEmptyDialogClasses('my-class p-2'')
向资源资源表添加类
使用 addResourceResourceTableClasses
方法。
(new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceResourceTableClasses(['my-class', 'p-2']) (new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceResourceTableClasses('my-class p-2'')
高级用法
创建您自己的 Nova 资源,以进一步自定义它。
您应该将 $globallySearchable
设置为 false,以便此资源不包括在全局搜索中。
(见:禁用资源的全局搜索)
来自 example-app-nvpRt7 的示例资源
class CardUser extends Resource { /** * The model the resource corresponds to. * * @var string */ public static string $model = \App\Models\User::class; /** * Indicates if the resource should be globally searchable. * * @var bool */ public static $globallySearchable = false; /** * Get the displayable label of the resource. * * @return string */ public static function label(): string { return __('Latest Users'); } /** * The pagination per-page options configured for this resource. * * @return array */ public static $perPageOptions = [5]; /** * Build an "index" query for the given resource. * * @param NovaRequest $request * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public static function indexQuery(NovaRequest $request, $query): \Illuminate\Database\Eloquent\Builder { return $query->orderByDesc('created_at'); } /** * Get the fields displayed by the resource. * * @param NovaRequest $request * @return array */ public function fields(NovaRequest $request): array { return [ ID::make()->sortable(), Text::make(__('Name'), 'name'), ]; } /** * Determine if the current user can delete the given resource. * * @param \Illuminate\Http\Request $request * @return bool */ public function authorizedToDelete(Request $request): bool { return false; } /** * Determine if the current user can restore the given resource. * * @param \Illuminate\Http\Request $request * @return bool */ public function authorizedToRestore(Request $request): bool { return false; } /** * Determine if the current user can update the given resource. * * @param \Illuminate\Http\Request $request * @return bool */ public function authorizedToUpdate(Request $request): bool { return false; } /** * Determine if the current user can force delete the given resource. * * @param \Illuminate\Http\Request $request * @return bool */ public function authorizedToForceDelete(Request $request): bool { return false; } /** * Determine if the current user can replicate the given resource or throw an exception. * * @param \Illuminate\Http\Request $request * @return bool */ public function authorizeToReplicate(Request $request): bool { return false; } // ...