*/ public function rules(): array { return [ 'slug' => [ 'required', 'string', 'max:128', 'regex:/^(?!.*\s)[\p{L}\p{N}\-_·]+$/u', 'unique:competitions,slug', ], 'name' => ['required', 'string', 'max:200'], 'description' => ['nullable', 'string'], 'pledge_content_html' => ['nullable', 'string', 'max:500000'], 'status' => ['required', 'string', 'max:32', Rule::in(Competition::STATUSES)], 'published' => ['sometimes', 'boolean'], 'signup_open_at' => ['nullable', 'date', 'required_with:signup_close_at'], 'signup_close_at' => ['nullable', 'date', 'after_or_equal:signup_open_at'], 'form_schema_id' => [ 'nullable', 'integer', Rule::exists('form_schema_definitions', 'id')->where('purpose', FormSchemaDefinition::PURPOSE_SIGNUP), ], 'review_form_schema_id' => [ 'nullable', 'integer', Rule::exists('form_schema_definitions', 'id')->where('purpose', FormSchemaDefinition::PURPOSE_REVIEW), ], 'branding_json' => ['nullable', 'array'], 'settings' => ['nullable', 'array'], 'scoring_rules_json' => ['nullable', 'array'], ]; } /** * @return array */ public function attributes(): array { return [ 'slug' => '访问地址', ]; } /** * @return array */ public function messages(): array { return [ 'slug.regex' => ':attribute 仅可为中文、字母、数字、横线、下划线或中点,且不能含空格。', ]; } }