При создании нового узла Drupal выдает сообщение об ошибке «На файл, используемый в поле Image, нельзя ссылаться». - PullRequest
0 голосов
/ 02 июля 2018

Когда я собираюсь создать новый узел типа, а затем загрузить поле изображения, отображается сообщение об ошибке «На файл, используемый в поле изображения, нельзя ссылаться». Я реализовал функцию hook_file_insert, в которой было сказано использовать file_usage_add. У меня есть мой код ниже:

function mymodule_file_insert($file){

  if($file->source=="field_image_und_0" || $file->source=="field_twitter_image_und_0"){
    mymodule_manage_file($file);
  }
}




/**
 * implements file manage
 */
function mymodule_manage_file($file){
  if($file->fid){
    mymodule_save_file($file->fid);
  }
}

/**
 * implements save file
 */
function mymodule_save_file($file_id){


  $file = file_load($file_id);
  $file->status = FILE_STATUS_PERMANENT;
  file_save($file);
  file_usage_add($file, 'file', 'node', $nid);

}

Здесь я получаю nid при создании нового узла?

1 Ответ

0 голосов
/ 02 июля 2018

Вы передаете $ nid, и он не имеет значения. Я думаю, что это должно работать:

function mymodule_file_insert($file){

    if($file->source=="field_image_und_0" || $file->source=="field_twitter_image_und_0"){
        mymodule_manage_file($file);
    }
}

/**
 * implements file manage
 */
function mymodule_manage_file($file){
    if($file->fid){
        mymodule_save_file($file->fid);
    }
}
/**
 * implements save file
 */
function mymodule_save_file($file_id, $nid){

    $file = file_load($file_id);

    if (isset($nid)) {
        file_usage_add($file, 'file', 'node', $nid);
    }else {
        $file->status = FILE_STATUS_PERMANENT;
        file_save($file);

    }

}

/**
 * Implements hook_node_insert().
*/

function mymodule_node_insert($node) {
    mymodule_save_file($node->field_name[LANGUAGE_NONE][0]['fid'], 
   $node->nid);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...