field($field, $label)->as(function ($value) { return (new ShowCopyable())->setValue($value)->render(); }); } /** * 为Form字段添加复制功能(只读显示) * * @param Form $form Form实例 * @param string $field 字段名 * @param string|null $label 字段标签 * @return FormCopyable */ public static function addToForm(Form $form, string $field, ?string $label = null): FormCopyable { $copyable = new FormCopyable($field, [$label]); $copyable->setForm($form); return $copyable; } /** * 批量为Show添加复制功能 * * @param Show $show Show实例 * @param array $fields 字段配置数组,格式:['field_name' => 'Field Label'] * @return void */ public static function addMultipleToShow(Show $show, array $fields): void { foreach ($fields as $field => $label) { self::addToShow($show, $field, $label); } } /** * 批量为Form添加复制功能 * * @param Form $form Form实例 * @param array $fields 字段配置数组,格式:['field_name' => 'Field Label'] * @return void */ public static function addMultipleToForm(Form $form, array $fields): void { foreach ($fields as $field => $label) { self::addToForm($form, $field, $label); } } /** * 为Show字段添加带格式化的复制功能 * * @param Show $show Show实例 * @param string $field 字段名 * @param string|null $label 字段标签 * @param callable|null $formatter 格式化函数 * @return ShowCopyable */ public static function addFormattedToShow(Show $show, string $field, ?string $label = null, ?callable $formatter = null): ShowCopyable { return $show->field($field, $label)->as(function ($value) use ($formatter) { if ($formatter) { $value = $formatter($value); } return (new ShowCopyable())->setValue($value)->render(); }); } /** * 为Form字段添加带格式化的复制功能 * * @param Form $form Form实例 * @param string $field 字段名 * @param string|null $label 字段标签 * @param callable|null $formatter 格式化函数 * @return FormCopyable */ public static function addFormattedToForm(Form $form, string $field, ?string $label = null, ?callable $formatter = null): FormCopyable { $copyable = new FormCopyable($field, [$label]); $copyable->setForm($form); if ($formatter) { $copyable->customFormat(function ($value) use ($formatter) { return $formatter($value); }); } return $copyable; } }