Сначала я собираюсь ответить на ваш вопрос, а затем объясню, почему вы задаете неправильный вопрос:
Если вы создаете форму вне формапи, возможно, вам повезет.Это вырастет и потребует от вас особой осторожности в отношении векторов атак, таких как массовое назначение.
views_some_view.tpl.php :
<form name="input" action="/link/to/view" method="get">
Country: <input type="text" name="country" />
my_custom_exposed_view.module: hook_block () Город:
Это будетсоздайте форму, которая в большинстве случаев будет начинаться с <form>
, имеет несколько полей ввода, затем lot случайного HTML, затем еще несколько полей ввода и затем закрытие.
Как вы, возможно, знаете, <input type="submit" value="Submit" />
будет публиковать только все теги form
, в которые он включен. Кнопка отправки в следующем HTML-коде:
<form name="input_1" action="/link/to/view" method="get">
Country: <input type="text" name="country" />
</form>
<form name="input_2" action="/link/to/view" method="get">
City: <input type="text" name="city" />
<input type="submit" value="Submit" />
</form>
будет отправлять толькоCity
.Это не те дроиды, которых вы ищете.
Это должна быть одна большая форма, но, поскольку все между form
и /form
очень динамичны и содержат большое количество HTML, включая потенциальные другие формы, это действительно не то, что выхочу.Более того: внешний вид блоков (показан / не показан) контролируется полностью независимо от содержимого.Вам понадобится много надежного кода, чтобы гарантировать, что блок a) никогда не будет отображаться, когда отсутствует начальный тег form
, и b) блок будет гарантированно отображаться при наличии этого открывающего тега form
.В противном случае у вас есть не только недействительный HTML, но и неработающий HTML, который в большинстве случаев действительно сделает вашу страницу непригодной для использования.
Вам просто не нужна часть формы в блоке, а другая часть всодержимое .
Однако вы хотите, чтобы оно визуализировалось , как если бы одна часть находилась в теле, а остальные - на боковой панели.
Хорошей новостью является то, что с HTML структура представления не зависит.Вот где лежит ваше решение.
- Дайте вашим полям формы хорошие идентификаторы и классы.Вы можете использовать
hook_form_alter
для изменения существующих форм, но вы, вероятно, просто хотите сами создать HTML-код для всей этой формы.Слой темы позволяет это. - Используйте CSS, чтобы выбрать одно поле формы по идентификатору и положению: поместите их в нужное место.Или выберите классы полей по классу и расположению: сравните их в правильном месте.
- Создайте простую процедуру идентификации, которая позволит добавить класс в тег body.(см. ниже).
Добавьте немного CSS, чтобы сдвинуть боковую панель ниже, освобождая место для полей формы, в которые нужно переместить, когда этот класс находится в теге body.
<body class="<?php print $splitform ?>">
function my_themename_preprocess_page() {
if ($GET['q'] == 'path/to/view') {
$vars['spliform'] = "splitform"
}
}