Drupal 7: Как программно получить и отобразить Views exposed form
Если у вас есть опыт отображения обычных форм при помощи функции drupal_get_form, то можно предположить, что для получения и отображения views exposed form будет достаточно простого вызова drupal_get_form с form_id. Но это не совсем верно, так как Views предоставлять форму не обычным способом и в данном случае этот прием не сработает.
Для того чтобы получить исходную форму и вызвать render вручную:
$view = views_get_view($view_name);
$view->set_display($display_id);
$view->init_handlers();
$exposed_form_state = array(
'view' => &$view,
'display' => &$view->display[$display_id],
'exposed_form_plugin' => $view->display_handler->get_plugin('exposed_form'),
'method' => 'get',
'rerender' => TRUE,
'no_redirect' => TRUE,
'always_process' => TRUE,
);
$form = drupal_build_form('views_exposed_form', $exposed_form_state);
$rendered_form = render($form);
Получить готовую разметку формы:
$view = views_get_view($view_name);
$view->set_display($display_id);
$view->init_handlers();
$exposed_form = $view->display_handler->get_plugin('exposed_form');
$rendered_form = $exposed_form->render_exposed_form(TRUE);