我的模块中有自己的内容类型。它有文字和图像字段。
我现在想要添加一个表单字段,如单选框和提交按钮,以便在呈现节点时,用户可以提供输入。我无法做到这一点。
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">'
;
}
干杯, 维沙尔
答案 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">'
;
}
干杯, 维沙尔