Добрый день! Наконец-то смог удачно настроить кнопку импорта в своей табличке. Решил испробовать его в деле. Сделал экспорт таблички в csv формате. Потом решил его же импортировать. Нажимаю на кнопку импорта, дальше выбираю тот-же файл и нажимаю "Submit"
В итоге выскакивает ошибка fopen(D:\Server\OSPanel\domains\site2\frontend\runtime/1/grid-export.csv): failed to open stream: No such file or directory (фопен(D:\Server\OS Cpanel\domains\site2\frontend\runtime/1/grid-экспорт.КШМ): не удалось открыть поток: нет такого файла или каталога).
Прошелся по своему коду и не понял в чем косяк.
Контроллер:
public function actionImporter($fName)
{
//путь к файлу
$pathToFile = Yii::getAlias('@way7') . '/'.$fName;
//файл можно загрузить с помощью формы
if (!file_exists($pathToFile) || !is_readable($pathToFile)) {
//... код, если файл отсутствует
}
$data = array();
if (($handle = fopen($pathToFile, 'r')) !== false) {
$i = 0;
while (($row = fgetcsv($handle, 1000, ',')) !== false) {
$model = new Kniga1();
$model->name = $row [0];
$model->creation_date = $row [1];
$model->id_avtor1 = $row [2];
if ($model->validate()) {
$model->save();
} else {
//... код в случае ошибки сохранения
}
}
fclose($handle);
};
//... код после импорта
}
public function actionUpload()
{
Yii::setAlias('@way7', '@runtime/1');
$model = new UploadForm();
if (Yii::$app->request->isPost) {
$model->way7 = UploadedFile::getInstance($model, 'way7');
if ($model->upload()) {
// file is uploaded successfully
$this->actionImporter($model->fName);
VarDumper::dump($model);
return;
}
}
return $this->render('upload', ['model' => $model]);
}
Модель:
public $fName;
/**
* @var UploadedFile
*/
public $way7;
public function rules()
{
return [
[['way7'], 'file', 'skipOnEmpty' => false],
];
}
public function upload()
{
if ($this->validate()) {
$this->fName = $this->way7->baseName . '.' . $this->way7->extension;
$this->way7->saveAs(\Yii::getAlias('way7') . $this->fName);
return true;
} else {
return false;
}
}
Вюшка:
<?php use yii\widgets\ActiveForm;
$form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
<?= $form->field($model, 'way7')->fileInput() ?>
<button>Submit</button>
<?php ActiveForm::end() ?>