Задать вопрос
@thatside

Как правильно организовать переходы по ссылкам в Symfony?

Нужно в проекте на Symfony при переходе по ссылке передавать какие-то определенные данные. Вся проблема в том, что ссылки находятся в таблице, и от того, какая это строка - зависят переданные данные (конкретный ID). С одной стороны, можно было бы передать это в GET-запросе, но это выглядит не самым красивым решением. Есть ли какие-то другие варианты?
В голове крутится костыль со скрытым input и js-обработчиком нажатия на ссылку, который устанавливает значение в input, но это определенно костыль.
  • Вопрос задан
  • 376 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
Существует несколько путей:
  1. стандартные ссылки (get-параметры или роуты):

    1.1) через get-параметры: /page?id=123&name=user

    1.2) через роуты с параметрами: /page/user/123 (хуже так: /page/name/user/id/123 или что-то наподобие)
  2. сделать скрытую POST-форму с hidden-данными, и ссылки будут отправлять эту форму
  3. делать js-роутинг. На самом деле, то же самое, что и вариант 2, но больше гибкости
  4. делать ajax-запрос новых страниц, то есть делать одностраничное приложение. Тогда symfony становится rest-бэкендом, а в браузер ставится что-то типа angular
  5. иметь длинные ссылки, но при щелчке на неё сохранять данные в сессию, и делать редирект на более красивую ссылку (что-то подобное делается у phpMyAdmin)
  6. отправлять данные через куки - скриптом ставить данные в куки и переходить на новую страницу, и браузер сам передаст только что записанные данные на сервер.


Опишите, какие ссылки вы хотите "украсить", может, что-то получится ещё придумать.

И помните, что все варианты, кроме первого, не позволят нормально поделиться ссылкой - передать ссылку через скайп, или поставить ссылку на другом сайте (реклама), или даже в закладки не поставить. Поэтому, используйте первый способ. К тому же, роуты - это правильный способ делать ссылки в symfony.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
SowingSadness
@SowingSadness
web-разработчик
Ну для начала вам нужно понять, что URL как раз содержит в себе определённые данные. Поэтому вопрос как с помощью URL передавать определённые данные лишён всякой логики.
Так же не понятно при чём тут Symfony (к тому же первая, которая уже давно покоится в могиле).
Ответ написан
@tasce
А почему ссылка с GET параметрами не является красивым решением, ведь для этого это и создали? Вы генерируете таблицу и к ссылке добавляете GET параметр ?id=$id
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы