このリンクで CakePHP の Utils プラグインを使用しています - https://github.com/CakeDC/utils。ただし、私が現在抱えている問題は、csv をアップロードすると、setFlash を使用して csv から正しい数のレコードをカウントすることです (例: test.csv から 3 つのレコードを正常にインポートしました)が、データベースにレコードを挿入しません。誰がこれを引き起こしているのかについて何か考えを持っていますか? 提供されたリンクから何も変更しませんでした。
これらは私がこれまでに行った手順です。私のAppmodelでは、以下のコードを追加しました
public $actsAs = array(
'Utils.CsvImport' => array(
'delimiter' => ','
)
);
app/View/Common に Common という名前の共有ビューを作成し、共有の import.ctp ビューを追加します。コードは以下のとおりです。
<h3>Import <?php echo Inflector::pluralize($modelClass);?> from CSV data file</h3>
<?php
echo $this->Form->create($modelClass, array('action' => 'import', 'type' => 'file') );
echo $this->Form->input('CsvFile', array('label'=>'','type'=>'file') );
echo $this->Form->end('Submit');
?>
これが私のAppControllerへのインポートアクションです
/**
* CSV Import functionality for all controllers
*
*/
function import() {
$modelClass = $this->modelClass;
if ( $this->request->is('POST') ) {
$records_count = $this->$modelClass->find( 'count' );
try {
$this->$modelClass->importCSV( $this->request->data[$modelClass]['CsvFile']['tmp_name'] );
} catch (Exception $e) {
$import_errors = $this->$modelClass->getImportErrors();
$this->set( 'import_errors', $import_errors );
$this->Session->setFlash( __('Error Importing') . ' ' . $this->request->data[$modelClass]['CsvFile']['name'] . ', ' . __('column name mismatch.') );
$this->redirect( array('action'=>'import') );
}
$new_records_count = $this->$modelClass->find( 'count' ) - $records_count;
$this->Session->setFlash(__('Successfully imported') . ' ' . $new_records_count . ' records from ' . $this->request->data[$modelClass]['CsvFile']['name'] );
$this->redirect( array('action'=>'index') );
}
$this->set('modelClass', $modelClass );
$this->render('../Common/import');
} //end import()
ドキュメントをアップロードするには、アプリをコントローラーアクションに向けます。例: localhost/test/employees/import
前もって感謝します