2016-02-11 6 views
1

У меня есть меню навигации на всех моих страницах. когда пользователь нажимает на одну ссылку, он открывает модальную форму, где пользователь может отправить сообщение. когда пользователь нажимает кнопку отправки, я хочу, чтобы контроллер возвращался на страницу, где он находился, когда модальная открылась.Как получить текущий маршрут в Symfony 2?

+0

, что вы создали маршрут на странице? или модуль? в 'routing.yml'? – Noman

+0

Возможный дубликат [Как получить текущий маршрут в Symfony 2?] (Http://stackoverflow.com/questions/7096546/how-to-get-current-route-in-symfony-2) – zizoujab

+0

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

ответ

2

Получить текущий маршрут в controller.

$router = $this->get("router"); 
$route = $router->match($this->getRequest()->getPathInfo()); 
var_dump($route['_route']); 

ИЛИ

$request = $this->container->get('request'); 
$routeName = $request->get('_route'); 

Чтобы получить текущий маршрут в twig

app.request.get('_route') 
+0

спасибо, но это не работает, с этим кодом я получаю маршрут контроллера, где я - – sepointes

+0

. попросил получить текущий маршрут. мой ответ вернет правильный текущий маршрут в веточке. вам нужно добавить скрытое поле и поместить в него текущий маршрут. затем измените модальное действие отправки соответственно – Noman

+0

да, я думаю, что скрытое поле - единственное решение, я попробую это. спасибо – sepointes

-1

Чтобы создать путь в шаблоне веточку:

{{ path(app.request.attributes.get('_route'), 
    app.request.attributes.get('_route_params')) }} 

или получить текущий запрос URI:

{{ app.request.uri }} 

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

+0

'{{app.request.uri}}' дайте мне маршрут для открытой формы сообщения, так что это не то, что я хочу. да, пользователь может вернуться на текущую страницу, закрыв, но когда он отправит сообщение, я должен указать маршрут к моему контроллеру, и я хочу вернуться на текущую страницу так же, как если бы пользователь закрыл модальный – sepointes

+0

. Если вы пытаетесь использовать '{{app .request.uri}} 'в запросе, который фактически обрабатывает отправку сообщения, он не будет работать, поскольку это отдельный HTTP-запрос ... Возможно, вы захотите передать путь возврата в виде скрытого ввода формы, но, честно говоря, с помощью количество деталей, которые вы предоставили, я не думаю, что вы получите большую помощь. – Karolis

0

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

После этого контроллер может вернуть простое сообщение об успешном завершении или вид формы с любым сообщением об ошибке.

Пользователь может попробовать повторить отправку сообщения или просто закрыть модальный или закрыть его автоматически с помощью window.timeout, если представление было успешным. Пользователь никогда не покидает исходную страницу, и им не нужно ждать перезагрузки страницы.

Библиотека как JQuery будет сделать это довольно легко реализовать Е.Г.

$(document).on("click","button#messageSend",function(e){ 
    tht = $(this); 
    frm = tht.closest("form"); 
    container = frm.parent() 
    e.preventDefault(); 
    $.ajax({ 
     url: frm.attr("action"), 
     method: "POST", 
     data: frm.serialize(), 
     dataType: "html" 
    }).done(function(data){ 
     container.html(data); 
     // Add any additional processing here 
    }); 
    return false; 
}); 
Смежные вопросы