99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

Laravel Nova 注冊 Metrics

2023-02-16 17:09 更新

一旦您定義了 metric,即可將指標附加到資源。Nova 生成的每個資源都包含一個 cards 方法。要將 metric 附加到資源,您只需將其添加到該方法返回的 metrics/cards 的數(shù)組中:

/**
 * 獲取資源可用的卡片。
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function cards(Request $request)
{
    return [new Metrics\UsersPerDay];
}

資源詳情 Metrics

除了在資源索引屏幕上放置 metrics 外,您還可以將 metric 附加到資源詳細屏幕。例如,如果您構(gòu)建一個播客應(yīng)用程序,您可能希望顯示用戶在一段時間內(nèi)創(chuàng)建的播客總數(shù)。要指示 metric 顯示在詳情頁面而不是索引頁面上,請將 onlyOnDetail 方法鏈接到您的 metric 注冊:

/**
 * 獲取可用于請求的卡片。
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function cards(Request $request)
{
    return [
        (new Metrics\PodcastCount)->onlyOnDetail(),
    ];
}

當然,您需要修改 metric 的查詢,以僅收集當前顯示資源的 metric 數(shù)據(jù)。為此,您 metric 的 calculate 方法可以訪問傳入 $request 的 resourceId 屬性:

use App\Podcast;

return $this->count(
    $request,
    Podcast::where('user_id', $request->resourceId)
);

Dashboard Metrics

您不僅限于在資源的索引屏幕上顯示 metrics。您可以自由地向「儀表盤」 添加 metrics,這是 Nova 登錄后顯示的默認頁面。默認情況下,此屏幕通過內(nèi)置的 Help 卡片顯示指向 Nova 文檔的一些有用鏈接。要向儀表盤添加 metric,在 app/Providers/NovaServiceProvider 類的 cards 方法返回的數(shù)組中添加 metric:

use App\Nova\Metrics\NewUsers;

/**
 * 獲取應(yīng)顯示在 Nova 儀表板上的卡片
 *
 * @return array
 */
protected function cards()
{
    return [
        new NewUsers,
    ];
}

Metric 大小

默認情況下,metrics 占據(jù) Nova 內(nèi)容區(qū)域的三分之一。但是,您可以自由地將他們放大。為此,請在資源注冊 metric 時調(diào)用 width 方法:

/**
 * 獲取可用于請求的卡。
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function cards(Request $request)
{
    return [
        // Two-thirds of the content area...
        (new Metrics\UsersPerDay)->width('2/3'),

        // Full width...
        (new Metrics\UsersPerDay)->width('full'),
    ];
}

Authorization

如果您只想向某些用戶公開給定的 metric,您可以將 canSee 方法鏈接到您的 metric 注冊。canSee 方法接受一個應(yīng)該返回 true 或 false 的閉包。閉包將接收傳入的 HTTP 請求:

use App\User;

/**
 * 獲取資源可用的卡片。
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function cards(Request $request)
{
    return [
        (new Metrics\UsersPerDay)->canSee(function ($request) {
            return $request->user()->can('viewUsersPerDay', User::class);
        }),
    ];
}

在上面的示例中,我們在 User 模型上使用 Laravel 的 Authorizable trait 的 can 方法去決定授權(quán)用戶是否被授權(quán)使用 viewUsersPerDay 操作。但是,由于代理到授權(quán)策略方法是 canSee 的常見用例,您可以使用 canSeeWhen 方法去實現(xiàn)相同行為。canSeeWhen 方法與 Illuminate\Foundation\Auth\Access\Authorizable trait 的 can 方法有相同的方法簽名。

use App\User;

/**
 * 獲取資源可用的卡片。
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function cards(Request $request)
{
    return [
        (new Metrics\UsersPerDay)->canSeeWhen(
            'viewUsersPerDay', User::class
        ),
    ];
}


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號