将表单元素添加到节点以便在drupal 7中输入用户

时间:2011-11-25 15:36:27

标签: drupal drupal-7 drupal-modules

我的模块中有自己的内容类型。它有文字和图像字段。

我现在想要添加一个表单字段,如单选框和提交按钮,以便在呈现节点时,用户可以提供输入。我无法做到这一点。

1) 当我在创建内容类型时尝试添加单选框时,我的第一次尝试失败了。

simplequiz_radio11' => array(
'field_name' => 'simplequiz_radio11,
**'type'       => 'radio',**

除文本和图像外,我还在类型字段中写什么。我想再次提到,当节点呈现不处于编辑模式时,无线电盒需要接受用户输入。

2)我尝试使用drupal_get_forms,我可以使用drupal_get_forms将表单及其元素附加到节点,但我的节点有很多图像(字段),我需要每个图像的表单元素,因此使用它不实用这条路。以下是我的代码:

function simplequiz_node_view($node, $view_mode, $langcode)
{  
$f = drupal_get_form('simplequiz_form', $node);
$f['#weight'] = 100;
$node->content['data_collection_form'] = $f;
}

这样可以正常工作,但我怎么能这样说10个图像字段呢?似乎第一种选择更好,但我似乎无法获得正确的字段类型。

//我设法解决了它,因为我的逻辑错误我需要使用编码器而不是drupal中的字段。

function simplequiz_field_formatter_info() {
return array(

'simplequiz_example_field' => array(
  'label' => t('radio button on node'),
  'field types' => array('text'),
),
 'simplequiz_btn_field' => array(
  'label' => t('button on node'),
  'field types' => array('text'),
), 

);


}

/**
* Implements hook_field_formatter_view().
*/


function simplequiz_field_formatter_view($object_type, $object, $field, $instance,    
$langcode, $items, $display) {
switch ($display['type']) {
 case 'simplequiz_example_field':
  $element[0]['#type'] = 'markup';
  $element[0]['#markup'] = theme('simplequiz_example_field', array('value' => $items[0]   
['safe_value']));
  break;

case 'simplequiz_btn_field':
  $element[0]['#type'] = 'markup';
  $element[0]['#markup'] = theme('simplequiz_btn_field', array('value' => $items[0]  
['safe_value']));
  break;
 }
 return $element;
 }

/**
* Theme the example field.
 */
function theme_simplequiz_example_field($variables) {
return '<form><input type="radio" name="type" value="silver">Gold'
.$variables['value']. ' </br> <input type="radio" name="type" value="Gold"> Silver </br>   
</form>'

    ;
}

function theme_simplequiz_btn_field($variables) {
 return '<input type="submit" class="form-submit" value="Submit" name="op" id="edit-   
submit--2">'

    ;
}

干杯, 维沙尔

1 个答案:

答案 0 :(得分:0)

//我设法解决了它,因为我的逻辑错误我需要使用编码器而不是drupal中的字段。

function simplequiz_field_formatter_info() {
return array(

'simplequiz_example_field' => array(
  'label' => t('radio button on node'),
  'field types' => array('text'),
),
 'simplequiz_btn_field' => array(
  'label' => t('button on node'),
  'field types' => array('text'),
), 

);


}

/**
* Implements hook_field_formatter_view().
*/


function simplequiz_field_formatter_view($object_type, $object, $field, $instance,    
$langcode, $items, $display) {
switch ($display['type']) {
 case 'simplequiz_example_field':
  $element[0]['#type'] = 'markup';
  $element[0]['#markup'] = theme('simplequiz_example_field', array('value' => $items[0]   
['safe_value']));
  break;

case 'simplequiz_btn_field':
  $element[0]['#type'] = 'markup';
  $element[0]['#markup'] = theme('simplequiz_btn_field', array('value' => $items[0]  
['safe_value']));
  break;
 }
 return $element;
 }

/**
* Theme the example field.
 */
function theme_simplequiz_example_field($variables) {
return '<form><input type="radio" name="type" value="silver">Gold'
.$variables['value']. ' </br> <input type="radio" name="type" value="Gold"> Silver </br>   
</form>'

    ;
}

function theme_simplequiz_btn_field($variables) {
 return '<input type="submit" class="form-submit" value="Submit" name="op" id="edit-   
submit--2">'

    ;
}

干杯, 维沙尔