2016-01-05 5 views
0

У меня есть приложение yii2 с использованием расширенного шаблона и базы данных mySql, я уже создаю функцию для импорта файла excel в одну из таблиц, Я сделал эту функцию в контроллере с именем student, который содержит CRUD данных студентов. это мой кодИмпорт Excel в Yii2

public function actionImportExcel() 
{ 
    $inputFile = 'uploads/siswa_file.xlsx'; 
    try{ 
     $inputFileType = \PHPExcel_IOFactory::identify($inputFile); 
     $objReader = \PHPExcel_IOFactory::createReader($inputFileType); 
     $objPHPExcel = $objReader->load($inputFile); 
    } catch (Exception $e) { 
     die('Error'); 
    } 

    $sheet = $objPHPExcel->getSheet(0); 
    $highestRow = $sheet->getHighestRow(); 
    $highestColumn = $sheet->getHighestColumn(); 

    for($row=1; $row <= $highestRow; $row++) 
    { 
     $rowData = $sheet->rangeToArray('A'.$row.':'.$highestColumn.$row,NULL,TRUE,FALSE); 

     if($row==1) 
     { 
      continue; 
     } 

     $siswa = new Siswa(); 
     $siswa->nis = $rowData[0][0]; 
     $siswa->nama_siswa = $rowData[0][1]; 
     $siswa->jenis_kelamin = $rowData[0][2]; 
     $siswa->ttl = $rowData[0][3]; 
     $siswa->alamat = $rowData[0][4]; 
     $siswa->telp = $rowData[0][5]; 
     $siswa->agama = $rowData[0][6]; 
     $siswa->nama_ortu = $rowData[0][7]; 
     $siswa->telp_ortu = $rowData[0][8]; 
     $siswa->pekerjaan_ortu = $rowData[0][9]; 
     $siswa->tahun_masuk = $rowData[0][10]; 
     $siswa->kelas = $rowData[0][11]; 
     $siswa->save(); 

     print_r($siswa->getErrors()); 
    } 
    die('okay'); 
} 

но я не знаю, как сделать кнопку в целях, чтобы эта функция работала. я имею в виду я хочу сделать кнопку, когда пользователь нажимает на кнопку, и просматривать их файл первенствовать они могут импортировать этот файл и данные внутри первенствует можно импортировать в базу данных

ответ

3

Сначала вы должны загрузить файл

и то обработка с функцией

есть несколько частей кода, который необходимо произвести ..

например вид для пользователя, чтобы загрузить файл

Вид: @ приложение/просмотров/сайт/upload.php

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?> 

    <?= $form->errorSummary($model); ?> 

    <?= $form->field($model, 'imageFile')->fileInput() ?> 

    <button>Submit</button> 

<?php ActiveForm::end() ?> 

контроллер: @ приложение/контроллеры/SiteController.php

namespace app\controllers; 

use Yii; 
use yii\web\Controller; 
use app\models\UploadForm; 
use yii\web\UploadedFile; 

class SiteController extends Controller 
{ 
    public function actionUpload() 
    { 
     $model = new UploadForm(); 

     if (Yii::$app->request->isPost) { 
      $model->imageFile = UploadedFile::getInstance($model, 'imageFile'); 
      if ($model->upload()) { 
       // file is uploaded successfully 
       return; 
      } 
     } 

     return $this->render('upload', ['model' => $model]); 
    } 
} 

Модель: @ приложение/модели /UploadForm.php

namespace app\models; 

use yii\base\Model; 
use yii\web\UploadedFile; 

class UploadForm extends Model 
{ 
    /** 
    * @var UploadedFile 
    */ 
    public $imageFile; 

    public function rules() 
    { 
     return [ 
      [['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'], 
     ]; 
    } 

    public function upload() 
    { 
     if ($this->validate()) { 
      $this->imageFile->saveAs('uploads/' . $this->imageFile->baseName . '.' . $this->imageFile->extension); 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

код от this doc

+0

большое спасибо! я попробую это –

+0

Если ответ правильный, отметьте его как принятый, и если это полезно, оцените его как полезное. – scaisEdge

+0

Я уже использую ваш ответ, но есть ошибка, я использую ваш код вида в моей модели _form.php, а затем модель и контроллер в модели и контроллере, а затем есть еще неизвестная ошибка неизвестного свойства ':: imageFile.How можно исправить это? –