私はDynaGridとExportMenuでいくつかのビューを持っています。すべてのエクスポートをCSVファイルとしてアーカイブに保存するには、毎日が必要です。私は、コントローラから新しいエクスポート(DynaGridで定義されている)を開始する方法を知らない。Yii2:プログラムでエクスポートを開始する方法
私は、次の可能な解決策を発見したが、それらのどれが最適ではない:
- 私は、対応するモデルで輸出を定義し、this exampleのようにコントローラのアクションを通じて輸出を実現することができます。しかし、私は同じ輸出を2回定義しなければならず、2つの輸出の間に差異が生じるリスクがある。
- 私はCodeceptionを使用できます。受け入れテストの枠内で、エクスポートメニューのクリックをシミュレートします。このソリューションは実装が比較的簡単ですが、私はそれが不安定であることがわかります。
- 私はまた、エクスポートファイルへのリンクを準備することができるので、Codeceptionでエクスポートする方が簡単になります。
参照:
<?= echo yii\helpers\Html::a('Export', ['controller/action'], [
'class'=>'classname',
'data'=>[
'method'=>'post',
'params'=>[
'export_type'=>'CSV',
'exportFull_w0' => '1',
'export_columns' => '0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20',
'column_selector_enabled' => '1'
],
]
]) ?>
がより簡単なものはありますか?私はこのように、ファイルをダウンロードすることができます延長UploadFromUrl、のようなものが必要になります。
$url = 'http://static.yiiframework.com/files/logo/yii.png' ;
$path = 'uploads/yii.png';
$file = UploadFromUrl::initWithUrl($url);
$file->saveAs($path);
しかし、それは現在のYiiアプリケーションからポストパラメータとURLを使用することはできません。
ああ、毎日cronジョブを使用してこれを実行できることを忘れていました。クリックをシミュレートするか、コード化を使用する必要はありません。 – IgnitedCoder
この解決策は可能ですが、すべてのエクスポートをもう一度定義する必要があります。 Dynagridのエクスポート設定を使用して、エクスポートファイルが同一であり、すべての変更で2種類のエクスポートを調整してテストする必要はありません。 –