Как использовать url_encode с returnTo в twig

#symfony #url #character-encoding #twig #urlencode

#symfony #url #кодировка символов #twig #urlencode

Вопрос:

У меня есть условие, при котором пользователь должен быть подтвержден ссылкой, полученной по почте. У меня есть некоторые данные url_encode, отредактированные в URL, которые я добавляю к url

Фактический URL-адрес — link this

mysite.net/register/api/login?returnTo=/register/verify-my-email?key=AC26HBASJDHBJHABSDJH683746F7BE3C3B816DB8ABD1FE1B8amp;value=NXJWL3H8LDSHBFJSDHBFJSHD876816YP9P9KJ71O2BQFKZUAIKTFMV2L3Samp;lang=en-US

Я хочу, чтобы часть returnTo была отредактирована url_encode, чтобы пользователь сначала вошел в систему. Я попытался использовать это в ветке шаблона электронной почты

 {% set siteUrl = 'mysite.net' %}
{% set returnToPath = '/register/verify-my-email'|url_encode %}

{% set verifyMyEmailUrl = siteUrl ~ "/register/api/login?returnTo=" ~ returnToPath ~ "?" ~ {
    'key': script.TOKEN_KEY,
    'value': script.TOKEN_VALUE,
    'lang': script.PREFERRED_LANG,
}|url_encode %}
  

URL-адрес при обращении сначала переходит к login, но после входа в систему URL-адрес становится link this

mysite.net/register/api/%2Fregistration%2Fverify-my-email%3Fkey=AC26HBASJDHBJHABSDJH683746F7BE3C3B816DB8ABD1FE1B8

Регистр / api / login не заменяется должным образом на register / verify-my-email, а также более поздние параметры url_encode ed не добавляются должным образом

Я хочу, чтобы URL-адрес был таким, как показано ниже, после входа в систему

mysite.net/register/verify-my-email?key=AC26HBASJDHBJHABSDJH683746F7BE3C3B816DB8ABD1FE1B8amp;value=NXJWL3H8LDSHBFJSDHBFJSHD876816YP9P9KJ71O2BQFKZUAIKTFMV2L3Samp;lang=en-US

Может ли кто-нибудь помочь мне в этом, поскольку я новичок в дизайне шаблонов twig и email?

Комментарии:

1. Лучше всего выполнять все ваши манипуляции с данными в вашем PHP-коде, а затем передавать эти измененные значения в twig.

2. @AndyPreston ну, не совсем, вот почему у вас есть фильтры в twig

3. @DarkBee Что именно я здесь делаю не так?

4. применяйте только url_encode параметры

Ответ №1:

Эта проблема была решена следующим решением

 {% set siteUrl = 'mysite.net' %}
{% set registerVerifyEmailRedirectUrl = '/register/verify-my-email?' ~ {
    key: scriptData.TOKEN_KEY,
    value: scriptData.TOKEN_VALUE,
    lng: scriptData.PREFERRED_LANG,
}|url_encode %}

{% set encodedVerifyMyEmailUrl = siteUrl ~ "/register/api/login?returnTo=" ~ registerVerifyEmailRedirectUrl|url_encode %}