Если я правильно читаю, похоже, что вы пытаетесь имитировать переменную slug, используя $sf_context->getRouting()->getCurrentInternalUri(true)
.
Я никогда не делал ссылку на переключение языка таким образом, но в основном, если это работаетВам нужно передать его как переменную с именем «slug» в маршрутизацию.Где-то в этой магической функции link_to_if () вам нужно иметь:
'&slug=' . $slug // the slug!
..., учитывая, что slug - это именованный параметр, которого ожидает правило маршрутизации.
UPDATE:
Вот как я обычно меняю язык:
Я бы создал отдельное действие (например, changeLanguage) без шаблона, а затем создал бы ссылки на него с языком какпараметр:
mysite.com/change-language/fr/ (?lang=fr)
mysite.com/change-language/de/ (?lang=de)
mysite.com/change-language/es/ (?lang=es)
В этом действии я использую $this->getUser()->setCulture($lang)
, чтобы изменить язык и все, что я хочу сделать, и затем использую $this->redirect($request->getReferer())
, чтобы перенаправить пользователя обратно на страницу, с которой он пришел.Если вашему приложению нужно использовать многоязычные URL-адреса, я бы позаботился о том, чтобы они отображались на своих страницах с помощью параметра URL (например, «slug»).И если вы делаете это с учетом SEO, все становится немного сложнее, потому что вы должны ссылаться непосредственно на разные языковые страницы вместо использования перенаправления и т. Д. (Для передачи ссылочного сока).
Надеюсь, чтопомогает.