|string[] $types * @return array */ protected function restrictAllowedTypes(string $param, Arrayable|array $types): array { if ($types instanceof Arrayable) { $types = $types->toArray(); } $types = implode(',', $types); return [ $param => [ 'sometimes', 'required', "array:$types", ], ]; } /** * Restrict the allowed values for the parameter. * * @param string $param * @param Arrayable|string[]|string $values * @param array $customRules * @return array */ protected function restrictAllowedValues(string $param, Arrayable|array|string $values, array $customRules = []): array { return [ $param => array_merge( [ 'bail', 'sometimes', 'required', 'string', new DelimitedRule(['required', Rule::in($values)->__toString()]), ], $customRules, ), ]; } /** * Prohibit the parameter. * * @param string $param * @return array */ protected function prohibit(string $param): array { return [ $param => [ 'prohibited', ], ]; } /** * Optional parameter. * * @param string $param * @param array $customRules * @return array */ protected function optional(string $param, array $customRules = []): array { return [ $param => array_merge( ['sometimes', 'required'], $customRules, ), ]; } /** * Require the parameter. * * @param string $param * @param array $customRules * @return array */ protected function require(string $param, array $customRules = []): array { return [ $param => array_merge( ['required'], $customRules, ), ]; } }