Symfony2 изменить метки формы на основе URL

0

У меня есть несколько версий существующей формы. У формы есть все те же вопросы, но метки для формы различаются в зависимости от того, кто ее заполняет (1-й против 3-го лица).

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

Я спрашиваю, потому что я нахожу, что сумка для инструментов Symfony велика, и я боюсь, что я что-то пропускаю. На данный момент единственным способом, который я вижу возможным, является использование прослушивателя событий.

Любая помощь приветствуется!

  • 0
    Попробуйте посмотреть учебник по Symfony Forms. symfony.com/doc/current/book/forms.html
  • 0
    Может быть, я недостаточно хорошо объяснил. Дело в том, чтобы иметь несколько меток для всех полей в форме. Метка проста, но смена метки с другой точки зрения немного отличается.
Показать ещё 3 комментария
Теги:
forms

2 ответа

1
Лучший ответ

Кажется, вы говорите строго о слое презентации. Я бы расследовал использование переводов для этого. Наличие нескольких классов форм или логики в вашем контроллере будет расстраивать. Вы упомянули первого и третьего лиц. Как вы определяете, находится ли пользователь в одной из этих групп? Возможно, вы создаете службу обертки для компонента перевода, который соответственно проверяет ваши требования и делегатов. Кажется, что все твои дела говорят на другом языке.

Ваша основная проблема заключается в определении того, кто является первым лицом и кто является третьим лицом. Это меняется на протяжении всего сеанса? Если этого не сделать в процессе аутентификации (избиратель безопасности может работать для определения) или/и сохранить его в сеансе, если он изменится. Переопределите службу перевода, чтобы использовать свою обертку, чтобы принять решение о том, какой перевод использовать.

Я вовсе не говорю, что это легко, но я думаю, что с использованием компонента перевода, аутентификации в качестве директора и контейнера службы вы можете получить то, что хотите, а не путать свою базу кода.

  • 0
    Это действительно крутая идея! Я опубликую свой результат, когда выясню, но я почти уверен, что пойду в этом направлении. Действительно твердое предложение!
  • 0
    Знаете ли вы, есть ли способ отобразить перевод непосредственно на сущность или тип формы, чтобы на основе соглашения об именовании переменной он использовал перевод в качестве label ? Похоже, что единственный способ завершить это на данный момент - это явно запросить тег внутри перевода.
Показать ещё 1 комментарий
0

У вас есть 2 варианта:

  1. используйте Symfony Forms. Чтобы создать 2 класса классов, и в вашем контроллере вы установите соответствующий класс формы переменной веточки, а затем в свой шаблон, который вы визуализируете

"""

{{ form_start(form) }}
    {{ form_errors(form) }}
    {{ form_row(form.field1) }}
    {{ form_row(form.field2) }}
{{ form_end(form) }}

"""

Выполнение этого способа позволяет определить форму, отображаемую в зависимости от того, кто ее просматривает. Затем вы можете определить в своих сервисах метод для вызова с вашего контроллера для установки этого класса до вызова действия контроллера.

  • 0
    Это тяжелый способ сделать это. Вы можете использовать прослушиватели событий, чтобы выполнить то же самое или даже обработчик опций. Я искал, есть ли какие-нибудь инструменты, которые могут быть уникальными для Symfony, о которых я не знал, для обработки этого странного сценария. Я думаю, что я мог бы найти что-то с переводами. Я отправлю, если я выясню это. В любом случае, спасибо.
  • 0
    Что вы думаете по поводу использования тем форм, чтобы попытаться выполнить задачу?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню