0

我在此链接上使用 CakePHP 的 Utils 插件 - https://github.com/CakeDC/utils。然而,我现在遇到的问题是,当我上传 csv 时,它会使用 setFlash 例如(从 test.csv 成功导入 3 条记录)从我的 csv 中计算正确的记录数,但没有将任何记录插入数据库。有没有人知道可能导致这种情况的原因。我没有从提供的链接中更改任何内容。

这些是我到目前为止所采取的步骤。在我的 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

提前致谢

4

0 回答 0