加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 自定义Drupal 7 Field仅保存第一个字符

发布时间:2020-12-13 17:38:30 所属栏目:PHP教程 来源:网络整理
导读:我本质上是尝试使用新的Drupal 7 Field API创建我的第一个字段类型模块. 我设法让它在“编辑”视图中正确显示. 但是,当我尝试保存一些数据时,它只保存第一个字符. 这是模块: ?phpfunction youtubefield_field_info() { return array( 'youtubefield_video'
我本质上是尝试使用新的Drupal 7 Field API创建我的第一个字段类型模块.
我设法让它在“编辑”视图中正确显示.
但是,当我尝试保存一些数据时,它只保存第一个字符.

这是模块:

<?php

function youtubefield_field_info() {
  return array(
    'youtubefield_video' => array(
      'label' => t('Youtube video'),'description' => t('This field stores a youtube video ID and displays the video associated with it'),'settings' => array(
        'max_length' => 11,),'instance_settings' => array(
        'text_processing' => false,'default_widget' => 'youtubefield_video_widget','default_formatter' => 'youtubefield_video_formatter',);
}

function youtubefield_field_widget_info() {
  return array(
    'youtubefield_video_widget' => array(
      'label' => t('Default'),'field types' => array('youtubefield_video'),);
}

function youtubefield_field_widget_form(&$form,&$form_state,$field,$instance,$langcode,$items,$delta,$element) {
  $element['#type'] = 'textfield';
  $element['#default_value'] = isset($items[$delta]) ? $items[$delta] : '';
  return $element;
}

function youtubefield_field_is_empty($item,$field) {
  return !$item;
}

function youtubefield_field_formatter_info() {
  return array(
    'youtubefield_video_formatter' => array(
      'label' => t('Youtube video'),);
}

这是安装程序:

<?php

function youtubefield_field_schema($field) {
  return array(
    'columns' => array(
      'value' => array(
        'type' => 'varchar','length' => 11,'not null' => true,'indexes' => array(),);
}

编辑:问题似乎与小部件有关,因为它以编程方式获取数据时工作正常.

解决方法

这个小部件形式对我有用:

function youtubefield_field_widget_form(&$form,
 $element) {
  $main_widget = array();
  switch ($instance['widget']['type']) {
  case 'youtubefield_video_widget':
    $main_widget = $element + array(
      '#type' => 'textfield','#default_value' => isset($items[$delta]['value']) ? $items[$delta]['value'] : NULL,);
    break;
  }
  $element['value'] = $main_widget;
  return $element;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读