2016-07-09 10 views
0

symfony 2.8でdeboer/data-importバンドルを使用して、csvファイルからデータベースにデータをインポートしようとしています。ddeboer/data-importエラー:インターフェイスDdeboer DataImport Workflowをインスタンス化できません

use Doctrine\ORM\EntityManager; 
use Ddeboer\DataImport\Workflow; 
use Ddeboer\DataImport\Reader\CsvReader; 
use Ddeboer\DataImport\Writer\DoctrineWriter; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class CsvFileWriter extends Controller { 
private $em; 
public function __construct(EntityManager $em) { 
    $this->em = $em; 
} 

public function csvImport($csvFile, $entity, $user ,$fileRecord) { 
$file = new \SplFileObject($csvFile); 
$csvReader = new CsvReader($file); 
$csvReader->setHeaderRowNumber(0); 
$csvReader->setStrict(false); 
$csvReader->setColumnHeaders($headers->csvReaderArray()); 
$workflow = new Workflow($csvReader); 
}} 

しかしforkflowと行にエラーを取得しておいてください。 エラー:csvReaderからインターフェイスDdeboer \ DataImport \ワークフロー 出力をインスタンス化できません: アレイ([routeNo] => 1 [tripNo] => 1 [callTripPositionを] => 1 [depotId] => 9002)

多くの提案があります。

答えて

3

Workflowはインターフェイスになり、StepAggregatorはそのインターフェイスを実装します。 ドキュメントは更新されませんが、あなただけの、次のように置き換える必要があります:

use Ddeboer\DataImport\Workflow; 
//... 
$workflow = new Workflow($csvReader); 

で:彼らは交換https://github.com/portphp/portphpに取り組んでいる:documentaionが廃止されましたので、もはや開発されていない

use Ddeboer\DataImport\Workflow\StepAggregator; 
//... 
$workflow = new StepAggregator($csvReader); 
+2

コードリファクタリングが少なくて済むように、新しい 'use'宣言:' Ddeboer \ DataImport \ Workflow \ StepAggregatorをワークフローとして使用する 'にエイリアスを設定することができます。 この方法では、すべてのインスタンス化を変更する必要はありません – LittleBigDev

0

いくつかの研究とコードのdebbuging後、Ddeboer-importはマニュアルを更新していないようです。ワークフローメソッドがインターフェイスになっただけでエラーが発生します。

0

このプロジェクトPHPのデータインポート/エクスポートワークフローです

symfonyバンドルも予定されていますが、今日の時点では開始していませんでした。 https://github.com/portphp/symfony-bundle

あなたの唯一の助けは、必要なコードをgithub repoで検索し、例としてtests filesを確認することです。

関連する問題