使用Laravel

时间:2016-04-24 02:58:50

标签: php validation laravel laravel-5

我有一个包含

产品的应用程序
  1. 动态尺寸。例如。 2D / 3D产品
  2. 预设尺寸,例如。 2x2,3x3
  3. 自定义尺寸输入AxB(用户输入)
  4. 这些配置存储在模型和数据库中。

    我需要验证尺寸输入。

    这是我在模型中写的一个例子。如何将其转换为有效的验证规则?

    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;
        }
    

0 个答案:

没有答案