2017-02-21 34 views
0

Я пишу модуль пользовательского миграции, чтобы переместить некоторые данные из канала JSON в Drupal 8.Drupal 8 JSON-процесс переадресации. Unix для преобразования даты

У меня есть основные строки, идущие в тип контента, но не могу показаться, чтобы преобразовать формат времени Unix во время фазы процесса в установочном yml-файле.

У меня есть

process: 
    field_post_date: 
    - 
     plugin: callback 
     callable: date 
     source: publish_date 

Текущий Input - 1486573222000 Выход - 1486573222000

Я хотел бы Input - 1486573222000 Выход - 02-08-2017T17: 00: 22

I хотел бы иметь возможность передать аргумент в пользовательскую php-функцию, если это возможно, и я думаю, что смогу заставить ее работать. Не уверенный, как хотя бы взглянуть на документ здесь https://www.drupal.org/docs/8/api/migrate-api/migrate-process/process-plugin-callback, но все еще может показаться, что он это понял.

Любая помощь будет оценена по достоинству.

ответ

0

См. https://www.drupal.org/node/2820490. Как только этот патч пойдет, метод будет в основном, но до этого вам нужно установить этот патч и использовать плагин process_date. Обратный вызов не будет работать, потому что вам нужно передать несколько аргументов для обратного вызова, и это просто невозможно.

+0

Я считаю, что могу сделать это с одним аргументом. Можете ли вы предоставить и пример передачи 1 аргумента функции php, а затем обратно в разметку yml? –

+0

Почему вы не можете использовать уже предоставленный процессный плагин? Он будет форматировать любую строку даты из любого формата в любой формат. – heddn

+0

Ваше право было просто любопытно для всего этого. Я переместил свой код в настраиваемый плагин процесса! благодаря –

0

Не удалось заставить это работать так, как я этого хотел, поэтому я написал функцию php для форматирования даты в json-файле перед запуском drush mi ***. Он анализирует дату и обновляется, когда unix находится в миллисекундах.

<!-- This is a custom php function to convert time stamps from unix to MM-DD-YYYYTHR:MM:SS which is accepted by drupal Date field type--> 
<?php 
date_default_timezone_set('GMT'); 
$json = file_get_contents("**your-url**.json"); 
$array = json_decode($json); 
foreach($array->blog_posts as $item){ 
    echo "<br>"; 
    $num = $item->publish_date; 
    $int = (int)$num; 
    $float = (float)$num; 
    $epoch = $float; 
    $seconds = $epoch * .001; 
    $item->publish_date = gmdate('Y-m-d',$seconds)."T".gmdate('H:i:s',$seconds); 
} 
foreach($array->blog_posts as $item1){ 
    echo $item1->updated; 
    echo "<br>"; 
    $num = $item1->updated; 
    $int = (int)$num; 
    $float = (float)$num; 
    $epoch = $float; 
    $seconds = $epoch * .001; 
    $item1->updated = $seconds; 
} 
file_put_contents('**export**.json', json_encode($array)); 
?> 

 Смежные вопросы

  • Нет связанных вопросов^_^