marko298 / nova-single-record-resource
Laravel Nova 单记录资源。在导航栏中直接显示链接到资源的唯一记录
v1.1.2
2020-09-28 19:54 UTC
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2024-08-29 05:01:01 UTC
README
来自 marko298/nova-single-record-resource 的分支
添加了创建直接链接到资源详情页的能力。适用于将只包含单个记录的模型。
先决条件
安装
$ composer require marko298/nova-single-record-resource
将 SupportSingleRecordNavigationLinks
特性添加到资源中
<?php namespace App\Nova; use Marko298\NovaSingleRecordResource\Traits\SupportSingleRecordNavigationLinks; use Laravel\Nova\Resource as NovaResource; abstract class Resource extends NovaResource { use SupportSingleRecordNavigationLinks; ... }
发布资产
$ php artisan vendor:publish --provider="Marko298\NovaSingleRecordResource\Providers\NovaSingleRecordResourceServiceProvider"
更新
在更新时,重要的一步是重新发布资产,如下所示
$ php artisan vendor:publish --force --provider="Marko298\NovaSingleRecordResource\Providers\NovaSingleRecordResourceServiceProvider"
卸载
从 composer 中移除
$ composer remove marko298/nova-single-record-resource
从您的 Nova 资源中移除 SupportSingleRecordNavigationLinks
特性
use SupportSingleRecordNavigationLinks;
移除自定义的导航模板
rm resources/views/vendor/nova/resources/navigation.blade.php
使用方法
将以下方法放置在只有一个记录的模型上。
class MyResource extends Resource { public static function singleRecord(): bool { return true; } }
可选地覆盖资源标识符。
class MyResource extends Resource { /** * @return string|int */ public static function singleRecordId(): bool { return 1; } }
工作原理
Laravel Nova 有能力覆盖用于渲染导航侧边栏的 Blade 模板。该模板是从 Nova 版本 v1.2.0 复制的,并添加了少量代码以支持将资源直接链接到详情视图。当使用标签 nova-views
发布供应商资产时,模板将被放置在项目的 resources/views/vendor/nova/resources
文件夹中。
视图更改
@if (method_exists($resource, 'singleRecord') && $resource::singleRecord()) <router-link :to="{ name: 'detail', params: { resourceName: '{{ $resource::uriKey() }}', resourceId: {{ $resource::singleRecordId() }} } }" class="text-white text-justify no-underline dim"> {{ $resource::label() }} </router-link> @else <router-link :to="{ name: 'index', params: { resourceName: '{{ $resource::uriKey() }}' } }" class="text-white text-justify no-underline dim"> {{ $resource::label() }} </router-link> @endif