Twig 包含重新渲染
Twig include with rerender
我想包含一些模板并在按钮点击时附加(通过 js),我需要每个包含的模板都有一个唯一的 ID。
这是我附加模板的逻辑:
<button type="submit" id="addTranslationFields">Add translations</button>
// and js
$('#addTranslationFields').on('click', function (event) {
event.preventDefault();
event.stopPropagation();
let part = `{% include 'translationPart.twig' with {'languages': languages,}%}`;
$('.table tbody').append(part);
});
这是我在 translationPart.twig
中生成 uuid 的方法
{% set uuid = uuid() %}
{{ uuid }}
问题是所有创建的模板的 UUID 都相同。我明白为什么会这样,它是服务器端生成的 b-z twig,在生成的那一刻,它只看到一个包含。但是是否有一些选项可以为每个新包含的副本重新呈现包含的模板?或者可以通过其他方式为每个包含的模板设置不同的 UUID。
已更新
uuid()
是一个自定义的树枝函数
$twig->addFunction(
new TwigFunction(
'uuid',
static function(): string {
return Uuid::uuid4()->toString();
}
)
);
您可以通过 ajax 调用 或 字符串替换 .
来实现
字符串替换
Twig 模板(translationPart.twig)
{% set uuid = '#_SOME_STRING_TO_REPLACE_#' %}
{{ uuid }}
Javascript
<button type="submit" id="addTranslationFields">Add translations</button>
// and js
$('#addTranslationFields').on('click', function (event) {
event.preventDefault();
event.stopPropagation();
let generatedUuid = generateUuidByJavascript();
let part = `{% include 'translationPart.twig' with {'languages': languages,}%}`.replace('#_SOME_STRING_TO_REPLACE_#', generatedUuid);
$('.table tbody').append(part);
});
Uuidjs可用于生成uuid。
我想包含一些模板并在按钮点击时附加(通过 js),我需要每个包含的模板都有一个唯一的 ID。
这是我附加模板的逻辑:
<button type="submit" id="addTranslationFields">Add translations</button>
// and js
$('#addTranslationFields').on('click', function (event) {
event.preventDefault();
event.stopPropagation();
let part = `{% include 'translationPart.twig' with {'languages': languages,}%}`;
$('.table tbody').append(part);
});
这是我在 translationPart.twig
{% set uuid = uuid() %}
{{ uuid }}
问题是所有创建的模板的 UUID 都相同。我明白为什么会这样,它是服务器端生成的 b-z twig,在生成的那一刻,它只看到一个包含。但是是否有一些选项可以为每个新包含的副本重新呈现包含的模板?或者可以通过其他方式为每个包含的模板设置不同的 UUID。
已更新
uuid()
是一个自定义的树枝函数
$twig->addFunction(
new TwigFunction(
'uuid',
static function(): string {
return Uuid::uuid4()->toString();
}
)
);
您可以通过 ajax 调用 或 字符串替换 .
来实现字符串替换
Twig 模板(translationPart.twig)
{% set uuid = '#_SOME_STRING_TO_REPLACE_#' %}
{{ uuid }}
Javascript
<button type="submit" id="addTranslationFields">Add translations</button>
// and js
$('#addTranslationFields').on('click', function (event) {
event.preventDefault();
event.stopPropagation();
let generatedUuid = generateUuidByJavascript();
let part = `{% include 'translationPart.twig' with {'languages': languages,}%}`.replace('#_SOME_STRING_TO_REPLACE_#', generatedUuid);
$('.table tbody').append(part);
});
Uuidjs可用于生成uuid。