在Drupal中将表单插入块中?

cod*_*ama 18 forms drupal

是否有任何命令或方法可用于将表单内容(例如用户注册表单)插入块中?

chi*_*org 26

在Drupal 7中,它看起来像这样:

function yourmodule_block_view($delta='')
{
  switch($delta) {
    case 'your_block_name':
      $block['subject'] = null; // Most forms don't have a subject 
      $block['content'] = drupal_get_form('yourmodule_form_function');
      break;
   }
   return $block;
 }
Run Code Online (Sandbox Code Playgroud)

返回的表单数组drupal_get_form将自动呈现.

yourmodule_form_function 是一个返回表单数组的函数(在您的模块或现有的Drupal模块中);


Eli*_*sky 15

drupal_get_form($form_id)- 把它放在一个模块的hook_block($ op =='view')中,甚至是...... shudder ...在一个带有PHP过滤器的块内.

您需要首先找到表单ID - 在表单中查找隐藏input的名称form_id.它的值应该是表单id.

此外,您只需使用Form Block模块即可.

  • 基本上,PHP过滤器是一个坏主意.来自Drupal关于该主题的手册页面:"......恶意用户手中存在重大且危险的安全风险.即使是受信任的用户也可能通过输入格式错误或不正确的PHP代码而意外泄露网站".你几乎总是更好地编写一个模块(实际上只是几行开销). (3认同)
  • 一个轶事,我在PHP过滤器的节点中有一个小的语法错误.它打破了搜索索引,打破了cron.这不值得调试复杂性. (3认同)