如何使用Twig生成随机字符串?

Gus*_*ube 3 php twig

我有一个输入,保存优惠券的代码.用户可以填写自定义代码,但我想给他们一个默认代码.我现在有以下代码:

<input type="text" name="code" value="{{ form.code|default(RANDOM_CODE) }}">
Run Code Online (Sandbox Code Playgroud)

我想用RANDOM_CODE随机字符串替换.

我认为这与问题无关,但form.code包含原始优惠券代码.我使用相同的表格进行编辑.

根据Twig文档,可以使用random(),甚至从字符串中获取随机字符来生成随机数random('abcdefgh...'),但我想生成一个具有特定长度的随机字符串.

我知道我可以使用至少两种方法做到这一点:

  1. 在控制器中生成默认随机代码,然后将其传递给视图; 要么
  2. 使用函数创建一个Twig扩展,为我生成随机字符串.

知道如果有一种方法只使用Twig的内置函数生成随机字符串,我很好奇.

Rya*_*yan 11

此代码将在base64中生成一个10个字符的密码(A到Z的大小写,0到9,短划线和下划线).这也使它对网友好.如果您愿意,可以根据自己的喜好更改参数.

{% set randomPassword = [] %}
{% set alpha = 'abcdefghijklmnopqrstuvwxyz' %}
{% set numbers = '0123456789' %}

{% for i in 1..10 %}
    {% set randomCharacter = random(alpha ~ alpha|upper ~ numbers ~ '-_') %}
    {% set randomPassword = randomPassword|merge([randomCharacter]) %}
{% endfor %}
{% set randomPassword = randomPassword|join %}


{{ randomPassword }}
Run Code Online (Sandbox Code Playgroud)

  • 这正是twig创建不做的事情. (23认同)
  • @Fluffy 可能不是为了这个目的,但生成随机字符串在 html 中具有实用性,可以为元素生成(任意的,但有时必要的且可能重复的)唯一 ID。我认为这个问题是有效的,尽管这里的目的值得怀疑。 (2认同)

Qcr*_*ies 5

树枝原生:

{{ random() }}
Run Code Online (Sandbox Code Playgroud)

请访问以下链接获取 Twig 文档。[检查]: https: //twig.symfony.com/doc/3.x/functions/random.html