在Twig中生成随机十六进制颜色

时间:2017-01-30 09:08:57

标签: symfony colors twig hex

我想在Twig中生成随机的十六进制颜色,例如将其用作背景,如下所示:

1
2
3
8
9
10
11
12
4
5
6
7
17
18
19

有什么办法吗?

2 个答案:

答案 0 :(得分:1)

我建议你随机化一组已知数据(为了排除没有意义值),如下所示:

{% for organization in organizations %}
    {
        value: {{ organization.value }},
        color: "{{ random(['#H54924', '#F36252', '#F56954']) }}"
        label: "{{ organization.name }}"
    },
{% endfor %}

编辑:

对于纯随机值,您可以尝试以下方法:

{% set values = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']%}
{% for organization in organizations %}
    {
        value: {{ organization.value }},
        color: "#{{random(values)~ random(values)~ random(values)~ random(values)~ random(values)~ random(values)  }}",
        label: "{{ organization.name }}"
    },
{% endfor %}
{{ '#' ~ random(values) ~ random(values) ~ random(values) ~ random(values) ~ random(values) ~ random(values)  }}

Here一个工作示例

希望这个帮助

答案 1 :(得分:0)

class SomeUtil
{
    /**
     * @return string hex color string (RGB): #XXXXXX
     */
    public static function randHexColor()
    {
        return sprintf("#%06s", dechex(rand(0, 256**3-1)));
    }

    /**
     * @param int $rangeFrom [0..255]
     * @param int $rangeTo [0..255]
     * @return string hex color string (RGB): #XXXXXX
     */
    public static function rangedRandHexColor($rangeFrom = null, $rangeTo = null)
    {
        $min = 0;
        $max = 255;
        if ($rangeFrom === null || !NumberUtil::inRange($rangeFrom, $min, $max)) {
            $rangeFrom = $min;
        }
        if ($rangeTo === null || !NumberUtil::inRange($rangeTo, $min, $max)) {
            $rangeTo = $max;
        }
        if ($rangeFrom === $min && $rangeTo === $max) {
            return self::randHexColor();
        } else {
            return sprintf("#%02s", dechex(rand($rangeFrom, $rangeTo)))
                .sprintf("%02s", dechex(rand($rangeFrom, $rangeTo)))
                .sprintf("%02s", dechex(rand($rangeFrom, $rangeTo)));
        }
    }

}

在控制器中

$data['util'] = new SomeUtil();

return $this->renderView('AppBundle:Foo:bar.html.twig', $data);

在树枝上

{{ util.randHexColor() }}

{{ util.rangedRandHexColor(180, 220) }}

排除深色和LSD颜色