Зависимости для пользовательских форм в Друпал 7
У меня есть несколько форм для одного типа контента в Drupal 7. Цель этого состоит в том, чтобы инициировать различные рабочие процессы, когда пользователь отправляет форму, в зависимости от типа включенной информации и определяемой /url для каждого. Эти формы находятся на разных страницах, и поля, показанные на каждой из них, определены в пользовательском модуле. Например:
... / form1 запускает рабочий процесс 1 и отображает поля a, b, e, f, g
... / form2 запускает рабочий процесс 2 и отображает поля a, b, c, e, h
... / form3 запускает рабочий процесс 3 и отображает поля a, b, f, x, y
В этом модуле это выглядит примерно так:
function my_custom_module_custom_form() {
// Build Form
$form = getForm('content_type');
switch (strtolower($form['#action'])):
case('/form1'):
$form['field_some_field']['#access'] = FALSE;
switch (strtolower($form['#action'])):
case('/form2'):
$form['field_other_field']['#access'] = FALSE;
Я хотел бы иметь шаблон страницы для каждой формы, чтобы я мог указать, что входит в каждую форму, вместо того, чтобы показывать / скрывать каждое поле для каждого в модуле, что является громоздким, учитывая количество полей.
Могу ли я создать шаблон страницы для каждой формы и связать кнопку отправки для запуска определенного действия в модуле?
Примечание: добавление зависимостей или использование отдельных типов контента не применимо к нашим вариантам использования. Если в приведенном выше коде есть ошибки, это только то, что я привел здесь краткий пример, сам модуль работает.
Спасибо за помощь!
1 ответ
Я создал предложения темы для конкретной формы узла:
Change the function name to THEMENAME_preprocess_node
Change initial value of template_filename to 'node'
Account for dashes in aliases by adding this line below the second if statement: $alias = str_replace('-', '_', $alias);
Итак, вот как это выглядит сейчас:
function THEMENAME_preprocess_node(&$variables, $hook) {
// Node template suggestions based off URL alias
if (module_exists('path')) {
$alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
if ($alias != $_GET['q']) {
$alias = str_replace('-', '_', $alias);
$template_filename = 'node';
foreach (explode('/', $alias) as $path_part) {
$template_filename = $template_filename . '__' . $path_part;
$variables['theme_hook_suggestions'][] = $template_filename;
}
}
}
}
Пожалуйста, дайте мне знать, если вам нужно больше деталей.