Вьюшка и форма "под нее"

Главные вкладки

Аватар пользователя olejonok olejonok 22 ноября 2015 в 17:04

Добрый день.

Предисловие: Как у вас здесь все изменилось! непривычно даже Smile Давно не был. Буду обживать. Рад за вас.

Задача: есть вьюшка INFO, которая настроена по Contextual filters на поле NAME
Другими словами показывает информацию относящуюся к значению этого поля.
Пример: /info/anna /info/oleg info/ivan

Нарисовал я простую форму для запроса, сделал ее блоком :

В итоге получаю : info/?name=anna info/?name=oleg info/?name=ivan

Вопрос: как добиться желаемого: /info/anna /info/oleg /info/ivan ?

Спасибо.

Комментарии

Аватар пользователя tlito tlito 22 ноября 2015 в 17:30

врядли у ва получится. так как модуль pathauto не работает по любому вашему желанию.
надо его специально запускать для генерации адресов для вех пользователей. как - ну программно:
1. вначале сгенерировать адреса для всех пользователей
2. потом реагировать на изменение имен
3. также реагировать на регистрации

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

Аватар пользователя bumble bumble 22 ноября 2015 в 17:42

Надеюсь, Вы предусмотрели ситуацию, в которой будет, например, 2 пользователя "Oleg"?
В теории, можно поставить адрес представления "info/%", и в контекстном фильтре проверять 2-й аргумент.

Аватар пользователя olejonok olejonok 22 ноября 2015 в 17:51

Я понимаю, что я кажется не так выразился.
Скажу по другому, могу ли я (наверное нет) сделать форму, чтобы через GET вызывать ВЬЮШКУ /info/%1
где %1 единственное значение поля этой формы. Оно будет не имя пользователя, конечно.
Спасибо за вашу оперативность, не ожидал.

Или же мне сделать модулек, который будет принимать этот параметр, считывать его через массив $_GET и дергать уже /info/%1 ?
В принципе не сложно. Вопрос: правильно ли это?

Аватар пользователя bumble bumble 22 ноября 2015 в 17:56

Можно так:

<?php
/**
 * Implements hook_form_submit().
 */
function MY_MODULE_form_submit($form, &$form_state){
  
form_state_values_clean($form_state);
  
drupal_goto('info/' $form_state['values']['FIELD_NAME']);
}
?>