定制 norman-huth/nova-resource-card 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

norman-huth/nova-resource-card

Composer 安装命令:

composer require norman-huth/nova-resource-card

包简介

A Laravel Nova card.

关键字:

README 文档

README

This repository is archived and no longer maintained.

If you offer, maintain, or know of an actively maintained alternative to this project, please contact me at maintainers@huth.it.

If the alternative references this repository as its source, inspiration, predecessor, or migration path, I may list it here so existing users can find a maintained replacement.

Nova Resource Card

With this package You can use Nova Resources Index as Card.
(For example on the Dashboard or other Nova resource)

Limitations:

  • No search
  • No pagination
  • No actions
  • No cards

Dashboard Preview Resource Preview Preview with footer link

Examples from example-app-nvpRt7

This package will certainly be extended in the course of time. Watch this package for Updates.
For suggestions and wishes please create an issue.

Install

composer require norman-huth/nova-resource-card

Usage

This usage examples use the Laravel Nova User resource class as example.

Add Nova Resource Card To A Dashboard

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)
        ];
    }
}

Add Nova Resource Card To A Other Nova Resource

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),
        ];
    }
}

Card Methods

Activate Footer Link To The Resource Index

Use the setFooterLinkLabel method.

(new NovaResourceCard(\App\Nova\Resources\User::class))->setFooterLinkLabel(__('To All Users'))

Use A Other Nova Resource As Footer Link Target

Use the setFooterLinkResource method.

(new NovaResourceCard(\App\Nova\Resources\User::class))
    ->setFooterLinkLabel(__('Go To Orders'))
    ->setFooterLinkResource(\App\Nova\Resources\Order::class)

Use A External Url For Footer Link

Use the setFooterLinkExternalUrl method.

(new NovaResourceCard(\App\Nova\Resources\User::class))
    ->setFooterLinkLabel(__('Visit Website'))
    ->setFooterLinkExternalUrl('https://huth.it')

Set Detail Link Resource

By default, this package generate the detail link by Resource::$model, so that you can use several resources for one model without any effort.

Use the setDetailLinkResource method.

(new NovaResourceCard(\App\Nova\Resources\User::class))
    ->setDetailLinkResource(\App\Nova\Resources\Order::class)

Set Card Width

Use the width method.

#[ExpectedValues(values: ['full', '1/3', '1/2', '1/4', '2/3', '3/4'])]

(new NovaResourceCard(\App\Nova\Resources\User::class))->width('1/2')

Add Classes To Card Element

Use the addCardClasses method.

(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')

Add Classes To Resource Heading

Use the addResourceHeadingClasses method.

(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')

Add Classes To Resource IndexErrorDialog

Use the addResourceIndexErrorDialogClasses method.

(new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceIndexErrorDialogClasses(['my-class', 'p-2'])
(new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceIndexErrorDialogClasses('my-class p-2'')

Add Classes To Resource IndexEmptyDialog

Use the addResourceIndexEmptyDialogClasses method.

(new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceIndexEmptyDialogClasses(['my-class', 'p-2'])
(new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceIndexEmptyDialogClasses('my-class p-2'')

Add Classes To Resource ResourceTable

Use the addResourceResourceTableClasses method.

(new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceResourceTableClasses(['my-class', 'p-2'])
(new NovaResourceCard(\App\Nova\Resources\User::class))->addResourceResourceTableClasses('my-class p-2'')

Advanced Usage

Create your own Nova resource to customize it even more.

You should set $globallySearchable to false so that this resource is not included in the global search.
(See: Disabling Global Search For A Resource)

Examples Resource from 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;
    }

    // ...

norman-huth/nova-resource-card 适用场景与选型建议

norman-huth/nova-resource-card 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 21.27k 次下载、GitHub Stars 达 6, 最近一次更新时间为 2023 年 04 月 09 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「nova」 「laravel」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 norman-huth/nova-resource-card 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 norman-huth/nova-resource-card 我们能提供哪些服务?
定制开发 / 二次开发

基于 norman-huth/nova-resource-card 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 21.27k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 6
  • 点击次数: 11
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 6
  • Watchers: 2
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-04-09