trafficmonitor/app/Helpers/create_form_helper.php
2025-11-05 18:58:37 +09:00

39 lines
1.6 KiB
PHP

<?php
if (! function_exists('render_field_form')) {
/**
* 폼 필드를 렌더링하고 유효성 검사 오류를 포함합니다.
* ServiceService에서 가져오던 로직을 여기로 옮깁니다.
*/
function render_field_form(string $field, $value, array $viewDatas): string
{
$service = $viewDatas['service'] ?? null;
if ($service === null) {
return __FUNCTION__ . "에서 오류발생: ViewDatas에 'service'가 정의되지 않았습니다.";
}
$formHelper = $service->getFormService();
$html = $formHelper->getSpecificFieldHtml($field, $value, $viewDatas);
$error = validation_show_error($field);
return $html . "<span>{$error}</span>";
}
if (! function_exists('render_field_label')) {
function render_field_label(string $field, array $viewDatas): string
{
$classPath = $viewDatas['class_path'];
$baseLabel = lang("{$classPath}.label.{$field}");
// 1. ServiceForm에서 동적 처리(예: 도움말 아이콘, 별도 클래스)를 가져옵니다.
$service = $viewDatas['service'] ?? null;
if ($service === null) {
return __FUNCTION__ . "에서 오류발생: ViewDatas에 'service'가 정의되지 않았습니다.";
}
$formHelper = $service->getFormHelper();
$dynamicHtml = $formHelper->getSpecificLabelAdornment($field);
// 2. 공통 로직: 필수 필드 표시 (*)
// (ServiceForm이 해당 필드가 필수인지 알려줘야 함)
$isRequired = $formHelper->isFieldRequired($field);
$requiredStar = $isRequired ? '<span class="text-danger">*</span>' : '';
return "{$baseLabel}{$requiredStar}{$dynamicHtml}";
}
}
}