grid->column($field, $label)->sortable();
}
/**
* 添加用户名列
*
* 复用价值:高 - 在多个控制器中使用,提供统一的用户名显示
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnUsername(string $field = 'username', string $label = '用户名'): Column
{
return $this->grid->column($field, $label);
}
/**
* 添加用户状态列
*
* 复用价值:高 - 统一处理用户状态的显示,包括状态名称和标签样式
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnStatus(string $field = 'status2', string $label = '状态'): Column
{
return $this->grid->column($field, $label)
->using(STATUS2::getNames())
->label([
STATUS2::Normal->value => 'success',
STATUS2::Disabled->value => 'danger',
STATUS2::Ban->value => 'warning',
]);
}
/**
* 添加用户头像列
*
* 复用价值:高 - 统一处理用户头像的显示,包括图片大小和样式
*
* @param string $field 字段名
* @param string $label 标签名
* @param int $width 宽度
* @param int $height 高度
* @return Column
*/
public function columnAvatar(string $field = 'avatar', string $label = '头像', int $width = 50, int $height = 50): Column
{
return $this->grid->column($field, $label)->image('', $width, $height);
}
/**
* 添加用户信息组合列
*
* 复用价值:高 - 将用户ID、用户名和头像组合显示,提高信息密度
*
* @param string $idField 用户ID字段名
* @param string $usernameField 用户名字段名
* @param string $avatarField 头像字段名
* @param string $label 标签名
* @return Column
*/
public function columnUserInfo(string $idField = 'id', string $usernameField = 'username', string $avatarField = 'avatar', string $label = '用户信息'): Column
{
return $this->grid->column($idField, $label)->display(function ($userId) use ($usernameField, $avatarField) {
$username = $this->{$usernameField} ?? '';
$avatar = $this->{$avatarField} ?? '';
$avatarHtml = $avatar ? "" : '';
return <<
{$avatarHtml}