Есть ли способ отобразить имя листа, в котором проверка Maatwebsite\Excel\Validators\ValidationException не удалась?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли способ отобразить имя листа, в котором проверка Maatwebsite\Excel\Validators\ValidationException не удалась?

Сообщение Anonymous »

Я пытаюсь проверить данные из нескольких листов в laravel, используя пакет maatwebsite/excel. Вот мой код контроллера.
try {
$import = new ImportMark($data);
Excel::import($import, $request->file('xls')->store('files'));
return redirect()->route('marks.index')->with('success', __('marks.batch_success', ['count'=>'']));
} catch (\Maatwebsite\Excel\Validators\ValidationException $e) {
$failures = $e->failures();

foreach ($failures as $failure) {
$failure->row(); // row that went wrong
$failure->attribute(); // either heading key (if using heading row concern) or column index
$failure->errors(); // Actual error messages from Laravel validator
$failure->values(); // The values of the row that has failed.
}
return redirect()->back()->withInput()->with('xls_errors', $failures);
} catch(\Exception $ex){
return redirect()->back()->withInput()->with('failure', $ex->getMessage());
}

На данный момент мне удалось добиться следующего.
Изображение

Однако мне не удалось получить имя листа, проверка которого не удалась. Мой лист выглядит так.
Изображение

Я пытаюсь показать имя листа (1031-Comp. Mathematics), в котором проверка не удалась. Вот мой класс ImportMark
class ImportMark implements WithMultipleSheets, WithEvents{

protected $data;
protected $no_of_sheets;
protected $totalRows;

public $sheetNames;
public $sheetData;

public function __construct($data){
$this->data = $data;
$this->sheetData = array_fill(0, 4, new ImportSubjectWiseSheet($this->data));
}

public function sheets(): array{
return $this->sheetData;
}

public function registerEvents(): array
{
return [
BeforeImport::class => function (BeforeImport $event) {
$this->totalRows = $event->getReader()->getTotalRows();
},
BeforeSheet::class => function(BeforeSheet $event) {
$this->sheetNames[] = $event->getSheet()->getTitle();
}
];
}

public function getSheetNames() {
return $this->sheetNames;
}

}


Подробнее здесь: https://stackoverflow.com/questions/770 ... validators
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»