【问题标题】:Laravel Nova - Show the name of the resource in the ID field instead of the actual IDLaravel Nova - 在 ID 字段中显示资源的名称而不是实际 ID
【发布时间】:2021-06-23 03:29:45
【问题描述】:

在 Laravel Nova 中是否可以在 ID 字段中显示例如名字和姓氏而不是实际 ID。但是我仍然希望能够单击它来查询资源并打开该资源的查看页面。 Laravel Nova 实际上在索引页面中显示关系时会自动执行此操作。但我找不到让 ID 显示为资源名称的方法。

我的 ID 字段是这样的:

    ID::make()->sortable(),

我的名字和姓氏字段如下:

    Text::make('Firstname')
        ->sortable()
        ->rules('required', 'max:255'),
    Text::make('Lastname')
        ->sortable()
        ->rules('required', 'max:255'),

但如果我这样写:

    ID::make('Firstname')->sortable(),

它使用名字而不是 ID 来查询模型。谁能告诉我如何解决这个问题?

【问题讨论】:

    标签: laravel laravel-nova


    【解决方案1】:

    我的解决方法如下:

    创建一个结合了名字和姓氏的 TextField,并返回一个使用该实体 ID 的链接。

      Text::make('Name', 'firstname', function () {
                    $url = \Nova::path()."/resources/{$this->uriKey()}/{$this->id}";
                    $name = $this->firstname.' '.$this->lastname;
    
                    return "<a class=\"no-underline dim text-primary font-bold\" href=\"{$url}\">{$name}</a>";
                })->asHtml()
                    ->sortable()
                    ->hideFromDetail()
                    ->hideWhenCreating()
                    ->hideWhenCreating(),
    

    这样它仍然可以使用 ID 链接到该资源的详细信息页面。 为了使这个自定义字段可排序,我重写了 indexQuery 函数,如下所示:

    public static $defaultSort = 'firstname';
    
    /**
     * Build an "index" query for the given resource.
     *
     * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request
     * @param  \Illuminate\Database\Eloquent\Builder  $query
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public static function indexQuery(NovaRequest $request, $query)
    {
        if (static::$defaultSort && empty($request->get('orderBy'))) {
            $query->getQuery()->orders = [];
    
            return $query->orderBy(static::$defaultSort);
        }
    
        return $query;
    }
    

    变量$defaultSort 代表你想要排序的列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-26
      • 2021-12-27
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多