我有一个包含
产品的应用程序这些配置存储在模型和数据库中。
我需要验证尺寸输入。
这是我在模型中写的一个例子。如何将其转换为有效的验证规则?
function validSizeString($size_string) {
$size_array = explode('x', $size_string);
$options = $this->getAttribute('options');
$size_type = $this->getAttribute('size_type');
if($size_type == self::SIZE_TYPE_2D && count($size_array) != 2){
return false;
} elseif($size_type == self::SIZE_TYPE_3D && count($size_array) != 3) {
return false;
} elseif ( !in_array($size_type, [self::SIZE_TYPE_2D, self::SIZE_TYPE_3D])) {
return false;
}
if(isset($options->preset_sizes_on) && $options->preset_sizes_on){
if(in_array($size_string, $options->preset_sizes) ){
return true;
}
}
}
自定义尺寸验证逻辑
if(isset($options->custom_size_on) && $options->custom_size_on){
$within_limits = function($value, $type) use ($options) {
if($value <= $options->{"max_.$type"} && $value >= $options->{"min_.$type"} ){
return true;
}
return false;
};
if ( !$within_limits($size_array[0], 'width') ) {
return false;
}
if ( !$within_limits($size_array[1], 'height') ) {
return false;
}
if($size_type == self::SIZE_TYPE_3D) {
if( !$within_limits($size_array[2], 'length') ) {
return false;
}
}
return true;
}