我有一个输入来保存优惠券的代码。用户可以填写自定义代码,但我想给他们一个默认代码。我现在有以下代码:
<input type="text" name="code" value="{{ form.code|default(RANDOM_CODE) }}">
我希望用随机字符串替换RANDOM_CODE
。
我认为这与问题无关,但form.code
包含原始优惠券代码。我使用相同的表格进行编辑。
根据Twig文档,可以使用random()
生成随机数,甚至可以使用random('abcdefgh...')
从字符串中获取随机数,但是我想生成一个随机字符串具体长度。
我知道我可以使用至少两种方法来做到这一点:
知道我很好奇是否有办法只使用Twig的内置函数生成随机字符串。
答案 0 :(得分:9)
此代码将在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 }}
答案 1 :(得分:1)
同意@Fluffy你不应该在树枝上做:你的优惠券代码是一个数据,将在php中处理,它必须在php中生成。
但是我有一个用例直接在模板中生成一个唯一的ID:当只涉及模板时。
我收到了一份有输入的表格。我的输入需要一个id,但只能从同一个模板中引用它们,在&#34; for&#34;标签的属性。
因为它是在循环中生成的,所以我提出了一个简单的:
class A
{
public:
A() : a(1) {}
A(const A& op):
const_field1(op.const_field1),..., a(op.a) // all const fields here
{ init() };
A(const A& op, int a_):
const_field1(op.const_field1),..., a(a)) // dup line at editor level
private:
void init(void) {
// init non const fields here
}
// ... Lots of constant and non-constant member data ...
const int a;
};
答案 2 :(得分:0)