*/ public function rules(): array { $rules = [ // 삭제는 폰트·이미지도 대상이므로 확장자 제한을 두지 않는다. 편집 가능 여부는 // 서비스가 판정한다 — 여기서 편집 확장자로 좁히면 올린 폰트를 지울 수 없다. 'path' => ['required', 'string', 'max:255', new SafeCustomAssetPath], ]; return HookManager::applyFilters('core.extension_custom_asset.read_validation_rules', $rules, $this); } /** * 검증 메시지 * * @return array */ public function messages(): array { return [ 'path.required' => __('custom_assets.validation.path_required'), ]; } }