Использование Forms+View

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

Аватар пользователя nachkar@drupal.org nachkar@drupal.org 8 октября 2008 в 15:01

Всем большой Друпаловский привет!
Только начинаю изучать Друпал, возникает много проблем, может кто поможет с одной?
Имеется свой тип материалов "Документы", добавлены следующие поля:
a)Дата подписания;
b)Номер;
c)Поле принадлежащие одному из терминов определенного словаря (это не так важно).
Необходимо сделать форму поиска документов по определенному интервалу "Даты подписания" и "Номера"(опционально).
Решил делать через View.
1)В "страница"->"заголовок" ввел код отображения формы поиска

function poisk_document_form() {
  $form['poisk'] = array(
    '#type' => 'fieldset',
    '#title' => t('По дате'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#prefix' => '<div class="fieldset-find-doc-date">',
    '#suffix' => '</div>',
  );
  $form['#redirect'] = FALSE;
  $form['poisk']['S'] = array(
    '#type' => 'date',
    '#title' => t('с'),
    '#default_value' => array('year' => 2008, 'month' => 1, 'day' => 1),
    '#prefix' => '<div class="date-find-doc-s">',
    '#suffix' => '</div>',
    '#size' => 10,
    '#required' => TRUE,
  );
  $form['poisk']['PO'] = array(
    '#type' => 'date',
    '#title' => t('по'),
    '#prefix' => '<div class="date-find-doc-po">',
    '#suffix' => '</div>',
    '#size' => 10,
    '#required' => TRUE,
  );
......
тут идет дальше описание формы
 
 $form['submit'] = array('#type' => 'submit', '#value' => t('Найти'),'#submit' => TRUE,);
 
  return $form;
}
function poisk_document_form_submit($form, &$form_state){
 $_SESSION['nomer_'] = $form_state['Nomer'];
 $_SESSION['data_s'] = $form_state['S'];
 $_SESSION['data_po'] = $form_state['PO'];
}

function page_poisk_document_form() {
   $my_page = drupal_get_form('poisk_document_form');
   $year_s=$_SESSION['data_s']['year'];
   $month_s=$_SESSION['data_s']['month'];
   $day_s=$_SESSION['data_s']['day'];
   $year_po=$_SESSION['data_po']['year'];
   $month_po=$_SESSION['data_po']['month'];
   $day_po=$_SESSION['data_po']['day'];

return $my_page;
}
return page_poisk_document_form();

1)Выбрал поля, необходимые выводить.
2)Фильтр на вывод только нод, данного типа и два фильтра на значения поля даты,одно с параметром больше=, другое меньше=.
Как передать параметры из формы в значения фильтра?

Комментарии

Аватар пользователя nachkar@drupal.org nachkar@drupal.org 8 октября 2008 в 16:12

Зачем изврат? Хм. Наверно потому, что плохо представляю как можно сделать по другому. Если кто подскажет,то буду премного благодарен. Нутром чувствую, что это через мягкое место,но "я не волшебник, я только учусь" Smile

Аватар пользователя gorr gorr 8 октября 2008 в 17:26

Имелись в виду exposed filters во вьюзах(после того, как с помощью интерфейса вьюза создаешь фильтры их еще можно превратить в exposed filters после чего они становятся доступными для конечного пользователя(что-то наподобие поисковой системы по полям, терминам таксономии...)

Аватар пользователя nachkar@drupal.org nachkar@drupal.org 8 октября 2008 в 21:00

пробовал их, но...
ставлю фильтр на поле ноды типа "дата", устанавливаю "Больше или равно чем", и юзер видит название данного фильтра, режим сравнения "больше или равно чем" и поле ввода, строкой. можно ли как-то предоставить ему выбор из определенный значений (день,месяц,год), а не самому вводить дату?

Аватар пользователя nachkar@drupal.org nachkar@drupal.org 9 октября 2008 в 8:17

Ок, про темизацию "слышал", но еще не дошел до нее. Можно ли как-то без нее? А решить поставленную задачу моим способом? Т.е. из формы передать значения в фильтр?

Аватар пользователя glu2006 glu2006 9 октября 2008 в 9:37

<a href="mailto:nachkar@drupal.org">nachkar@drupal.org</a> wrote:
Ок, про темизацию "слышал", но еще не дошел до нее. Можно ли как-то без нее? А решить поставленную задачу моим способом? Т.е. из формы передать значения в фильтр?

Лучше дойдите до нее))). Зачем делать то что заведомо неправильно? Браться так сказать правой рукой за левое ухо.

Аватар пользователя nachkar@drupal.org nachkar@drupal.org 9 октября 2008 в 10:24

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

Аватар пользователя glu2006 glu2006 9 октября 2008 в 12:15

<a href="mailto:nachkar@drupal.org">nachkar@drupal.org</a> wrote:
Курс понятен, буду дальше грызть гранит Друпала.
А если возникнет такая необходимость передать данные из формы, обработать их и на основании результата обработки использовать необходимый аргумент фильтра, это тоже можно темизацией сделать?
ps: ну я частенько правой рукой левое ухо чешу, видимо плохая привычка)

Это можно делать с помощью hook_form_alter если Вам это о чем-то говорит)))