字段显示

未匹配的标注
本文档最新版为 2.x,旧版本可能放弃维护,推荐阅读最新版!

字段显示

HTML

Since v1.7.0

通过html方法可以在详情页插入一段不显示labelHTML代码

// 传入字符串
$show->html('<br/>');

// 传入视图
$show->html(view(...));

// 传入闭包
$show->html(function () {
    // 获取字段信息
    $id = $this->id;
    $username = $this->username;

    return view(..., ['id' => $id]);
});

分隔线

如果要在字段之间添加一条分隔线:

$show->divider();

换行

如果要在字段之间使用换行:

$show->newline();

修改显示内容

用下面的方法修改显示内容

$show->title()->as(function ($title) {
    // 获取当前行的其他字段
    $username = $this->username;

    return "<{$title}> {$username}";
});

$show->contents()->as(function ($content) {
    return "<pre>{$content}</pre>";
});

帮助方法

帮助方法与数据表格字段帮助方法使用一致,可参考帮助方法

内置显示扩展方法

下面是通过as方法内置实现的几个常用的显示样式:

view

view方法可以引入一个视图文件。

// 模板中接收以下三个变量:
// name 字段名称
// value 字段值
// model 当前行数据
$show->content->view('admin.fields.content');

explode

explode方法可以把字符串分割为数组。

$show->tag->explode()->label();

// 可以指定分隔符,默认","
$show->tag->explode('|')->label();

prepend

prepend 方法用于给 stringarray 类型的值前面插入内容。

// 当字段值是一个字符串
$show->email->prepend('mailto:');

// 当字段值是一个数组
$show->arr->prepend('first item');

v1.2.5版本开始,prepend方法允许传入闭包参数

$show->email->prepend(function ($value, $original) {
    // $value 是当前字段值
    // $original 是当前字段从数据库中查询出来的原始值

    // 获取其他字段值
    $username = $this->username;

    return "[{$username}]";
});

append

prepend 方法用于给 stringarray 类型的值后面插入内容。

// 当字段值是一个字符串
$show->email->append('@gmail.com');

// 当字段值是一个数组
$show->arr->append('last item');

v1.2.5版本开始,append方法允许传入闭包参数

$show->email->prepend(function ($value, $original) {
    // $value 是当前字段值
    // $original 是当前字段从数据库中查询出来的原始值

    // 获取其他字段值
    $username = $this->username;

    return "[{$username}]";
});

image

字段avatar的内容是图片的路径或者url,可以将它显示为图片:

$show->avatar()->image();

image()方法的参数参考Field::image()

file

字段document的内容是文件的路径或者url,可以将它显示为文件:

$show->avatar()->file();

file()方法的参数参考Field::file()

link

字段homepage的内容是url链接,可以将它显示为HTML链接:

$show->homepage()->link();

link()方法的参数参考Field::link()

label

将字段tag的内容显示为label:

$show->tag()->label();

label()方法的参数参考Field::label()

badge

将字段rate的内容显示为badge:

$show->rate()->badge();

badge()方法的参数参考Field::badge()

using

如果字段gender的取值为f、m,分别需要用女、男来显示

$show->gender()->using(['f' => '女', 'm' => '男']);

dot

通过dot方法可以在列文字前面加上一个带颜色的圆点

Since v1.2.5 支持Dcat\Admin\Color类中内置的所有颜色

use Dcat\Admin\Admin;

$show->state
    ->using([1 => '未处理', 2 => '已处理', ...])
    ->dot(
        [
            1 => 'primary',
            2 => 'danger',
            3 => 'success',
            4 => Admin::color()->info(),
        ], 
        'primary' // 第二个参数为默认值
    );

显示文件尺寸

如果字段数据是表示文件大小的字节数,可以通过调用filezise方法来显示更有可读性的文字

$show->field('file_size')->filesize();

这样数值199812019将会显示为190.56 MB

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等