You are here

6 模块安装不了

admin 的头像
Submitted by admin on 星期四, 2015-09-17 09:53

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

我们现在的这个模块,依赖于ViewsRulesLinksField validation,模块依赖的太多,安装的时候就会存在问题。模块直接安装不起来。我信心满满的,发布了beta2,别人却装不上。

我在本地,一个新建的站点,把所有的模块都下载好,一起安装,报了这样的错误消息:

FieldException: Attempt to create a field of unknown type link_field. in field_create_field() (line 110 of D:\xampp\htdocs\breadcrumb3\modules\field\field.crud.inc).

我把这个问题发到了官网上,http://drupal.org/node/1863470。我后来查了相关的资料,发现,这个和Drupal核心也有点关系,其实应该算是Drupal核心的一个bug。不过,解决办法还是有的:

function breadcrumb2_install() {

   // Add or remove the link field, as needed.

  $field = field_info_field('link');

  if (empty($field)) {

    $field = array(

      'cardinality' => '-1',

      'entity_types' => array('breadcrumb2'),

      'field_name' => 'link',

      'module' => 'link',

      'type' => 'link_field',

    );

    $field = field_create_field($field);

  }

 

  // If a field type we know should exist isn't found, clear the Field cache.

  if (!field_info_field_types('link_field')) {

    cache_clear_all('field_info_types:', 'cache_field', TRUE);

  }

粗体部分,为新增的,我们通过代码创建了link类型的字段以后,如果后面还要添加该类型的字段实例,此时就需要清除字段缓存。不然就会找不到对应的类型。而我们在安装函数的下面,就有field_create_instance($instance)这样的代码。

这段代码是从Commerce模块里面复制过来的,在此做出说明。我调试这个问题的时候,还发现了另外的一个问题,就是我把breadcrumb2模块卸载了,还是无法禁用link模块,这个也是因为缓存的原因。卸载了breadcrumb2模块以后,手动的清除缓存,就可以禁用、卸载link模块了。当然,我们也可以在代码里面清除缓存。这个也被列为了Drupal核心的bug

 


Drupal版本: