nova-kit/helpers

为 Laravel Nova 提供实用的帮助函数

v1.0.1 2023-07-13 00:45 UTC

This package is auto-updated.

Last update: 2024-09-12 15:46:36 UTC


README

tests Latest Stable Version Total Downloads Latest Unstable Version License Coverage Status

安装

要通过 composer 安装,请在终端中运行以下命令

composer require "nova-kit/helpers"

用法

Eloquent

获取合格列名

NovaKit\column_name(string|\Illuminate\Database\Eloquent\Model $model, string $attribute): string;

该函数为 eloquent 模型生成合格列名

use function NovaKit\column_name;

return column_name(App\Models\User::class, 'email');

Eloquent Exists

NovaKit\eloquent_exists(\Illuminate\Database\Eloquent\Model|mixed $model): bool;

该函数检查给定的 $model 是否是 Illuminate\Database\Eloquent\Model 的实例,并且它在数据库中存在

use App\Models\User;
use function NovaKit\eloquent_exists;

$user = User::find(5);

return eloquent_exists($user);

获取表名

NovaKit\table_name(string|\Illuminate\Database\Eloquent\Model $model): string;

该函数为 eloquent 模型生成表名

use function NovaKit\table_name;

return table_name(App\Models\User::class);

Nova 请求帮助函数

有排序

NovaKit\has_ordering(\Laravel\Nova\Http\Requests\NovaRequest $request): bool;

确定当前请求是否有排序。

use Laravel\Nova\Http\Requests\NovaRequest;
use function NovaKit\has_ordering;

public static function indexQuery(NovaRequest $request, $query)
{
    if (! has_ordering($request)) {
        $query->orderBy('name');
    }
}

执行动作

NovaKit\running_action(\Illuminate\Http\Request $request, ?string $action): bool;

确定 NovaRequest 是否正在运行动作请求。

use Illuminate\Http\Request;
use Laravel\Nova\Http\Requests\NovaRequest;

public function authorizedToUpdate(Request $request)
{
    if (running_action($request, 'open-on-platform')) {
        return $request->user()->canModerateResources();
    }

    return $this->authorizedTo($request, 'update');
}

常用帮助函数

验证列名

NovaKit\is_column_name(mixed $column): bool;

验证给定的 $column 是否是有效的列名。

use function NovaKit\is_column_name;

if (is_column_name($request->query('sortBy'))) {
    $query->latest($request->query('sortBy'));
}

安全整数

NovaKit\safe_int(mixed $value): int|string;

将大于 JavaScript 的 Number.MAX_SAFE_INTEGER 的较大 id 转换为字符串。

use function NovaKit\safe_int;

return safe_int(9007199254741001); // will return "9007199254741001"

无模式 URL

NovaKit\schemaless_url(string $url): string;

获取给定 $url 的无模式 URL

use function NovaKit\schemaless_url;

return schemaless_url('https://github.com'); // will return "github.com"