|string> */ public function rules(): array { $rules = [ 'template_name' => ['required', 'string', 'max:255', new ValidExtensionIdentifier], // cascade 동반 설치 — install-preview 응답을 바탕으로 사용자가 선택한 항목 'dependencies' => ['nullable', 'array'], 'dependencies.*.type' => ['required_with:dependencies', 'string', 'in:module,plugin'], 'dependencies.*.identifier' => ['required_with:dependencies', 'string', 'max:255'], 'language_packs' => ['nullable', 'array'], 'language_packs.*' => ['string', 'max:255'], ]; // 모듈/플러그인이 validation rules를 동적으로 추가할 수 있도록 훅 제공 return HookManager::applyFilters('core.template.install_validation_rules', $rules, $this); } /** * Get custom messages for validator errors. * * @return array */ public function messages(): array { return [ 'template_name.required' => __('templates.validation.name_required'), 'template_name.string' => __('templates.validation.name_string'), 'template_name.max' => __('templates.validation.name_max'), ]; } }