Magento 2にサードパーティライブラリを含める方法(php xlsxライブラリなど)


7

Magento 2にphp xlsxライブラリのようなサードパーティのライブラリを含める方法は?

過去7日間、Googleでブラウジングしており、情報を見つけることができませんでした。

Magento 2は、パーサー、ロガーなどのデフォルトフレームワークモジュールを提供します。この場合、xlsx形式でエクスポートレポートを追加する必要がありますか?


1
あなたはjsライブラリまたはphpライブラリを追加したいですか?
Shaheer Ali 2016

@shaheer ali phpライブラリ
Anand Ontigeri

php libファイルをmagetnoのlibフォルダーまたはモジュールフォルダーに配置し、require_once( 'path_to_your_lib_file');を使用してモジュールファイルに含めます。
Shaheer Ali 2016

@shaheer、明確にさせてください:-私はカスタムライブラリを作成しています(たとえば、フレームワークを取る)、\ Magento \ Framework \ App \ Action \ Actionの権利を拡張できます。このようにして、Magento \ Framework \ custom_libraryのようなlibファイルを拡張するだけで済みます\ library。(require_onceの使用はこの場合は異なります)
Anand Ontigeri

回答:


4

以下は、カスタムlibを作成する手順です

これで私はPHpexcel libを取ります

  1. libをダウンロードhttps://github.com/PHPOffice/PHPExcel/tree/1.8/Classes
  2. フォルダーをlib / internalに保持する
  3. PHPExcel.phpを開き、クラス名をPhpexcel_PHPExcelに変更します。
  4. PHPExcelフォルダー内の多くの関数の初期化PHPExcelはPhpexcel_PHPExcelに変更します。それ以外の場合、エラーex lib \ internal \ Phpexcel \ PHPExcel \ Calculation.php __constructおよびgetInstance functionにより、すべてのPHPExcelがPhpexcel_PHPExcelに変更されます。
  5. どこでもあなたの使用は

    Phpexcel_PHPExcelを使用します。

    Phpexcel_PHPExcel_IOFactoryを使用します。

そして__constructの中

    Phpexcel_PHPExcel $xlsx,
  $this->excelFactory = $excelFactory;

例のように、xlsxファイルを構築できます

public function getXlsxFile()
    {

        $component = $this->filter->getComponent();

        $name = md5(microtime());
        $file = 'export/'. $component->getName() . $name . '.xml';

        $this->filter->prepareComponent($component);
        $this->filter->applySelectionOnTargetProvider();

        /** @var SearchResultInterface $searchResult */
        $component->getContext()->getDataProvider()->setLimit(0, 999999);
        $searchResult = $component->getContext()->getDataProvider()->getSearchResult();

        $this->prepareItems($component->getName(), $searchResult->getItems());

        /** @var SearchResultIterator $searchResultIterator */
        $searchResultIterator = $this->iteratorFactory->create(['items' => $searchResult->getItems()]);
        $filterDataArr = '';
        foreach($searchResultIterator as $dataRow){
            $filterDataArr[]= $dataRow->getData();
        }

        $excelDataArray = '';
        $sheetTitle = 'export';
        $HeadersArray = $this->metadataProvider->getHeaders($component);     
        $FieldsArray = $this->metadataProvider->getFields($component);
        if(($key = array_search('actions', $FieldsArray)) !== false) {
            unset($FieldsArray[$key]);
        }

        if($component->getData('worksheetlabel')){
             $sheetTitle = $component->getData('worksheetlabel');
        }

        $hPos = 0;
        foreach($HeadersArray as $key =>$value){
            $excelDataArray[$hPos][$key] = $value;
        }

        $dPos = 1;
        if(count($filterDataArr) > 1){
            foreach($filterDataArr as $Filterdata){
                foreach($FieldsArray as $key=>$value){
                        $excelDataArray[$dPos][$key] = $Filterdata[$value];
                }
                $dPos++;
            }
        }

        $this->_Xlsx->getActiveSheet()->fromArray($excelDataArray, null, 'A1' );

        $this->_Xlsx->getActiveSheet()->setTitle($sheetTitle);
        $this->_Xlsx->setActiveSheetIndex(0);
        $callStartTime = microtime(true);

        $name = md5(microtime());
        $file = '/export/'. $component->getName() . $name . '.xlsx';

        $this->directory->create('export');
        $objWriter = Phpexcel_PHPExcel_IOFactory::createWriter($this->_Xlsx, 'Excel2007');
        $filepath = $this->directory->getAbsolutePath($file);
        $objWriter->save($filepath);

        return [
            'type' => 'filename',
            'value' => $file,
            'rm' => true  // can delete file after use
        ];
    }

1
私の意見でlib/internalは、触れられるべきではありません。lib/external代わりに作成できます。
MagePsycho 2017年

@peadeepこんにちは、私はFPDFのLIBを追加したいが、動作していないfpdf.orgをあなたが話したよう。適切な方法を教えてください。
Hitesh Vaghasiya 2017

2

どのライブラリをインストールしたいですか?

php xlsxライブラリのグーグル検索の最初の結果は私にこれを与えました:https//github.com/PHPOffice/PHPExcel

packagistに登録されているのでhttps://packagist.org/packages/phpoffice/phpexcel

次のシェルコマンド(magento2ルートディレクトリから)を使用して、magento2インスタンスに簡単にインストールできます。

composerにはphpoffice / phpexcelが必要です

Magento拡張機能で使用する場合は、モジュールのcomposer.jsonファイルにライブラリが必要です。これにより、拡張機能のインストール時に常に自動的にインストールされます。

その後、オートローディングはcomposerによって処理されます


このライブラリphpexcel.codeplex.com
Anand Ontigeri

github.com/PHPOffice/PHPExcelは、この:oの最新の作曲家準拠バージョンのように見えます。たぶんあなたはそれを試してみますか?
David Verholen、2016

@DavidVerholen:-xlxs libをダウンロードしてlibフォルダーに保存したら、コントローラーまたはモデルファイルでそれを使用する方法は、ロジャーフレームワークモジュールが作成されたときにShaheer Aliが伝えたようにファイルモデルを含めるか、独自のフレームワークモジュールを書き込むことですか
プラディープクマール

手動でダウンロードする必要はありません。composerでインストールするだけで問題ありません。その後、コンストラクター依存性注入を使用して、他のmagentoクラスと同じくらい簡単にライブラリのインスタンスを取得できます
David Verholen

1

phpライブラリファイルをmagentoのlibフォルダーに配置します。例:your_magento / lib / phpxlsモジュールファイルの上に、以下のコードを使用してlibファイルを含めます。

$object_manager = Magento\Core\Model\ObjectManager::getInstance();
$dir = $object_manager->get('Magento\App\Dir');            
$base = $dir->getDir();
$lib_file = $base.'lib/phpxls/your_lib_file.php'
require_once($lib_file);

編集 Myhelplib.phpなどのモジュールヘルパーフォルダーにファイルを作成します。Mycustomlib.phpファイルの先頭に上記のコードを挿入すると、次のようになります。

$object_manager = Magento\Core\Model\ObjectManager::getInstance();
$dir = $object_manager->get('Magento\App\Dir');            
$base = $dir->getDir();
$lib_file = $base.'lib/phpxls/your_lib_file.php'
require_once($lib_file);
namespace Yournamespace\Module\Helper;

class Mycustomlib extends Yourlibclass
{ 
}

Mycustomlibをモジュールの必要な場所に拡張できます


1
しかし、この場合、このファイルが必要なすべてのファイルに.but magento 2ライブラリが自動的に読み込まれるように含める必要があります。そのため、正しく構成する必要があります。構成レベルまたは自動読み込みレベルでカスタムライブラリを読み込みます。
Anand Ontigeri 2016

別のアプローチを使用できます。libファイルからモデル/ヘルパーファイルを拡張して、モデル/ヘルパーファイルを使用できます
Shaheer Ali

よろしければ、わかりやすく説明していただけますか。私はmagento 2を初めて使用するため
Anand Ontigeri

1
今すぐ私の答えを確認してください
Shaheer Ali、2016

1
これは機能しません。namespaceコードファイルの最初の行である必要があります。
Arvind07

0

Magento 2は、モジュールとサードパーティパッケージの両方のcomposerインストールをサポートしています。

PhpExcelは現在廃止されており、新しいPhpSpreadsheetを使用する必要があります。

composer経由のインストール:

composer require phpoffice/phpspreadsheet

参考までに:phpspreadsheet.readthedocs.io

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.