字段显示
<h1>字段显示</h1>
<h3>HTML</h3>
<p>通过<code>html</code>方法可以在详情页插入一段不显示<code>label</code>的<code>HTML</code>代码</p>
<pre><code class="language-php">// 传入字符串
$show-&gt;html('&lt;br/&gt;');
// 传入视图
$show-&gt;html(view(...));
// 传入闭包
$show-&gt;html(function () {
// 获取字段信息
$id = $this-&gt;id;
$username = $this-&gt;username;
return view(..., ['id' =&gt; $id]);
});</code></pre>
<h3>分隔线</h3>
<p>如果要在字段之间添加一条分隔线:</p>
<pre><code class="language-php">$show-&gt;divider();</code></pre>
<h3>换行</h3>
<p>如果要在字段之间使用换行:</p>
<pre><code class="language-php">$show-&gt;newline();</code></pre>
<h3>修改显示内容</h3>
<p>用下面的方法修改显示内容</p>
<pre><code class="language-php">$show-&gt;title()-&gt;as(function ($title) {
// 获取当前行的其他字段
$username = $this-&gt;username;
return &quot;&lt;{$title}&gt; {$username}&quot;;
});
$show-&gt;contents()-&gt;as(function ($content) {
return &quot;&lt;pre&gt;{$content}&lt;/pre&gt;&quot;;
});</code></pre>
<h3>帮助方法</h3>
<p>帮助方法与数据表格字段帮助方法使用一致,可参考<a href="model-grid-column.md#help">帮助方法</a>。</p>
<h3>内置显示扩展方法</h3>
<p>下面是通过as方法内置实现的几个常用的显示样式:</p>
<h4>view</h4>
<p><code>view</code>方法可以引入一个视图文件。</p>
<pre><code class="language-php">// 模板中接收以下三个变量:
// name 字段名称
// value 字段值
// model 当前行数据
$show-&gt;content-&gt;view('admin.fields.content');</code></pre>
<h4>explode</h4>
<p><code>explode</code>方法可以把字符串分割为数组。</p>
<pre><code class="language-php">$show-&gt;tag-&gt;explode()-&gt;label();
// 可以指定分隔符,默认&quot;,&quot;
$show-&gt;tag-&gt;explode('|')-&gt;label();</code></pre>
<h4>prepend</h4>
<p><code>prepend</code> 方法用于给 <code>string</code> 或 <code>array</code> 类型的值前面插入内容。</p>
<pre><code class="language-php">// 当字段值是一个字符串
$show-&gt;email-&gt;prepend('mailto:');
// 当字段值是一个数组
$show-&gt;arr-&gt;prepend('first item');</code></pre>
<p><code>prepend</code>方法允许传入闭包参数</p>
<pre><code class="language-php">$show-&gt;email-&gt;prepend(function ($value, $original) {
// $value 是当前字段值
// $original 是当前字段从数据库中查询出来的原始值
// 获取其他字段值
$username = $this-&gt;username;
return &quot;[{$username}]&quot;;
});</code></pre>
<h4>append</h4>
<p><code>append</code> 方法用于给 <code>string</code> 或 <code>array</code> 类型的值后面插入内容。</p>
<pre><code class="language-php">// 当字段值是一个字符串
$show-&gt;email-&gt;append('@gmail.com');
// 当字段值是一个数组
$show-&gt;arr-&gt;append('last item');</code></pre>
<p><code>append</code>方法允许传入闭包参数</p>
<pre><code class="language-php">$show-&gt;email-&gt;prepend(function ($value, $original) {
// $value 是当前字段值
// $original 是当前字段从数据库中查询出来的原始值
// 获取其他字段值
$username = $this-&gt;username;
return &quot;[{$username}]&quot;;
});</code></pre>
<h4>image</h4>
<p>字段avatar的内容是图片的路径或者url,可以将它显示为图片:</p>
<pre><code class="language-php">$show-&gt;avatar()-&gt;image();</code></pre>
<p>image()方法的参数参考Field::image()</p>
<h4>file</h4>
<p>字段document的内容是文件的路径或者url,可以将它显示为文件:</p>
<pre><code class="language-php">$show-&gt;avatar()-&gt;file();</code></pre>
<p>file()方法的参数参考Field::file()</p>
<h4>link</h4>
<p>字段homepage的内容是url链接,可以将它显示为HTML链接:</p>
<pre><code class="language-php">$show-&gt;homepage()-&gt;link();</code></pre>
<p>link()方法的参数参考Field::link()</p>
<h4>label</h4>
<p>将字段tag的内容显示为label:</p>
<pre><code class="language-php">$show-&gt;tag()-&gt;label();</code></pre>
<p>label()方法的参数参考Field::label()</p>
<h4>badge</h4>
<p>将字段rate的内容显示为badge:</p>
<pre><code class="language-php">$show-&gt;rate()-&gt;badge();</code></pre>
<p>badge()方法的参数参考Field::badge()</p>
<h4>using</h4>
<p>如果字段gender的取值为<code>f</code>、<code>m</code>,分别需要用女、男来显示</p>
<pre><code class="language-php">$show-&gt;gender()-&gt;using(['f' =&gt; '女', 'm' =&gt; '男']);</code></pre>
<h4>dot</h4>
<p>通过<code>dot</code>方法可以在列文字前面加上一个带颜色的圆点</p>
<pre><code class="language-php">use Dcat\Admin\Admin;
$show-&gt;state
-&gt;using([1 =&gt; '未处理', 2 =&gt; '已处理', ...])
-&gt;dot(
[
1 =&gt; 'primary',
2 =&gt; 'danger',
3 =&gt; 'success',
4 =&gt; Admin::color()-&gt;info(),
],
'primary' // 第二个参数为默认值
);</code></pre>
<h4>显示文件尺寸</h4>
<p>如果字段数据是表示文件大小的字节数,可以通过调用filezise方法来显示更有可读性的文字</p>
<pre><code class="language-php">$show-&gt;field('file_size')-&gt;filesize();</code></pre>
<p>这样数值199812019将会显示为190.56 MB</p>