详情字段显示扩展
<h1>详情字段显示扩展</h1>
<p>这个功能用来扩展详情字段显示, 在内置的显示方法不满足需求的情况下,可以使用这个功能来实现</p>
<p>首先定义扩展类:</p>
<pre><code class="language-php">&lt;?php
namespace App\Admin\Extensions\Show;
use Dcat\Admin\Show\AbstractField;
class UnSerialize extends AbstractField
{
// 这个属性设置为false则不会转义HTML代码
public $escape = false;
public function render($arg = '')
{
// 返回任意可被渲染的内容
return unserialize($this-&gt;value);
}
}</code></pre>
<p>然后在<code>app/Admin/bootstrap.php</code>中注册扩展类</p>
<pre><code class="language-php">use Dcat\Admin\Show\Field;
use App\Admin\Extensions\Show\UnSerialize;
Field::extend('unserialize', UnSerialize::class);</code></pre>
<p>然后在控制器中使用这个扩展</p>
<pre><code class="language-php">$show-&gt;column()-&gt;unserialize('xxx');</code></pre>
<p>传入unserialize()方法的参数会按顺序传入UnSerialize::render()方法中。</p>
<p>在父类<code>Dcat\Admin\Show\AbstractField</code>中可以看到几个常用的属性</p>
<pre><code class="language-php">/**
* Field value.
*
* @var mixed
*/
protected $value;
/**
* Current field model.
*
* @var Fluent
*/
protected $model;
/**
* If this field show with a border.
*
* @var bool
*/
public $border = true;
/**
* If this field show escaped contents.
*
* @var bool
*/
public $escape = true;</code></pre>
<p>其中<code>$value</code>和<code>$model</code>分别是当前字段值和当前详情内容的数据,在<code>render()</code>方法中可以用来获取你想要的数据。</p>
<p><code>$border</code>用来控制当前显示内容是否需要外边框,<code>$escape</code>分别用来设置当前显示内容要不要HTML转义。</p>