【发布时间】:2015-12-30 21:30:28
【问题描述】:
我有一个包含优惠券代码的输入。用户可以填写自定义代码,但我想给他们一个默认代码。我现在有以下代码:
<input type="text" name="code" value="{{ form.code|default(RANDOM_CODE) }}">
我想用一个随机字符串替换RANDOM_CODE。
我认为这与问题无关,但form.code 包含原始优惠券代码。我使用相同的表单进行编辑。
根据 Twig 文档,可以使用 random() 生成随机数,甚至可以使用 random('abcdefgh...') 从字符串中获取随机字符,但我想生成具有特定长度的随机字符串。
我知道我至少可以使用两种方法来做到这一点:
- 在控制器中生成默认随机码,然后将其传递给视图;或
- 创建一个带有函数的 Twig 扩展来为我生成随机字符串。
知道我很好奇是否有一种方法可以仅使用 Twig 的内置函数生成随机字符串。
【问题讨论】:
-
我认为可以使用 Twig 创建变量。您可以使用循环通过每次生成单个随机字符并附加来随机化多个字符。这行得通吗?
-
@rnevius,是的。我在我的问题中说过。
-
@IsmaelMiguel,似乎可行。例如,我可以使用
for循环给出一个范围,例如{% for i in 0..10 %}来创建一个长度为10 个字符的字符串。但是使用这种方法,我需要在循环中添加一个random('abcdefghi...')。我在想一些更紧凑的东西,但我几乎可以肯定这是不可能的。 -
听起来你有计划!
-
我经常通过简单地将随机数附加到前缀来执行此操作。例如:
{% set code='prefix-' ~ random() %}。使用范围做长度。 10个字? 'prefix-' 是 7,还需要 3 个...random([100..999])- 3 位随机数。