*/ public function rules(): array { $rules = [ 'path' => ['required', 'string', 'max:255', new SafeCustomAssetPath(CustomAssetService::EDITABLE_EXTENSIONS)], // 빈 문자열 저장을 허용한다 — 운영자가 CSS 를 통째로 비우는 것은 정당한 조작이고, // 그것을 막으면 파일을 지우는 것 말고는 되돌릴 방법이 없어진다. 'content' => ['present', 'string', 'max:'.CustomAssetService::MAX_TEXT_BYTES], ]; return HookManager::applyFilters('core.extension_custom_asset.save_validation_rules', $rules, $this); } /** * 검증 메시지 * * @return array */ public function messages(): array { return [ 'path.required' => __('custom_assets.validation.path_required'), 'content.present' => __('custom_assets.validation.content_present'), 'content.max' => __('custom_assets.errors.too_large_to_edit', [ 'limit' => (string) CustomAssetService::MAX_TEXT_BYTES, ]), ]; } }