Создание ссылки на ту же страницу с параметрами запроса в Symfony - PullRequest
1 голос
/ 03 августа 2011

Как можно использовать помощники url_for или link_to для создания ссылки на ту же страницу, передавая все параметры GET?

У меня есть страница поиска, которая принимает несколько параметров в качестве фильтров, чтобы скрыть определенные результаты. Например, search.html?query=abc&people=1&groups=0 будет искать все элементы, содержащие abc, которые не являются группами. Поэтому я хотел бы ссылку, которая переключает эти фильтры, передавая остальные параметры без изменений на текущей странице. В приведенном выше примере ссылки будут созданы на search.html?query=abc&people=1&groups=1 и search.html?query=abc&people=0&groups=0.

Мне интересно, есть ли способ указать 'this' в качестве маршрута, например, если маршрут или страница изменились, код не должен был бы это делать.

Кроме того, как можно передать все параметры помощнику? $sf_params может использоваться для доступа ко всем параметрам, а свойство 'query_string' может быть передано помощнику, но есть ли какой-нибудь способ комбинирования двух, если не создавать строку вручную?

Ответы [ 2 ]

1 голос
/ 03 августа 2011

GET-параметры могут быть переданы методу link_to в виде массива в третьем аргументе или url_for во втором. Это иллюстрируется следующим образом:

link_to('Text to display', 'routename', array('group' => 0, 'people' => 1), $link_attributes);
url_for('routename', array('group' => 0, 'people' => 1));

Это скрыто в исходном коде. Здесь $params - это список параметров GET, а $options атрибуты HTML для добавления в тег.

function link_to2($name, $routeName, $params, $options = array())
function url_for2($routeName, $params = array(), $absolute = false)

Функцию $sf_params можно преобразовать в подходящий массив для передачи с помощью getAll(). Смотри документацию здесь . Обратите внимание, что это отличается от предыдущих версий Symfony. Также имейте в виду, что вам, возможно, придется позвонить getRawValue() из шаблона:

$params = $sf_params->getRawValue()->getAll();

$sf_context->getInstance()->getRouting()->getCurrentRouteName() затем можно передать как $ routeName, чтобы получить текущий маршрут. Спасибо Тому за это

0 голосов
/ 03 августа 2011

помещает переменные в скрытые типы данных, чтобы передавать их на

<form action="page.php" method="GET">
<input name="people" type="hidden" value="<?php echo htmlspecialchars($_GET['people'], ENT_QUOTES); ?>">
<input name="groups" type="hidden" value="<?php echo htmlspecialchars($_GET['groups'], ENT_QUOTES); ?>">
<input name="query" type="text" value="some_data">
<input name="send" type="submit" value="send">
</form>
...