, пожалуйста, помогите мне со следующим, я импортирую форму Excel, с пакетом Laravel Excel , и мой код работает без проблем, мне удалось прочитать и импортировать документ, но я должен сделать проверка этого, поскольку, когда файл Excel загружается с соответствующим форматом, он проходит, но когда документ с другим форматом загружается, он проходит тот же путь, он не выполняет импорт, но он также не уведомляет о том, что формат не соответствует.
В моем контроллере у меня есть следующая
открытая функция prestoImport (Request $ request)
{
$file = $request->file('file');
Excel::import(new PrestoImport, $file);
}
, а в моем файле PrestoImport.php у меня есть следующее
public function collection(Collection $rows)
{
foreach ($rows as $row)
{
// .... lectura e inserción de los datos
}
}
Я не могу понять, куда должен идти код для проверки заголовка Excel, который должен содержать столбцы Code, Nat, Ud и Summary
Твоя модель, должно быть, осуществляет интерфейс WithValidation
, asГ - что tendrГ-схвати что-то как:
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithValidation;
class PrestoImport implements ToModel, WithValidation{
//...
}
, Чтобы санкционировать заголовки, предполагая, что ты ждешь, что заголовок всегда estГ© в первой линии, внутри твоего файла PrestoImport.php
, serГ - во что-то как:
public function rules(): array
{
return [
// Siempre valida por lotes
// Fila.columna
'0.0' => 'in:Código',
'0.1' => 'in:Nat',
'0.2' => 'in:Ud',
'0.3' => 'in:Resumen',
];
}
, Если не estГЎs в PHP 7 или начальнике, он только удаляет тип информации, ожидаемый от возврата:
public function rules(){
//...
}
, Чтобы ловить ее excepciГіn, что generarГЎ, есть несколько форм, он состоит в том, чтобы заключать одну из них cГіdigo importaciГіn в одном try
catch
.
try {
$file = $request->file('file');
Excel::import(new PrestoImport, $file);
} catch (\Maatwebsite\Excel\Validators\ValidationException $e) {
$fallas = $e->failures();
foreach ($fallas as $falla) {
$falla->row(); // fila en la que ocurrió el error
$falla->attribute(); // el número de columna o la "llave" de la columna
$falla->errors(); // Errores de las validaciones de laravel
$falla->values(); // Valores de la fila en la que ocurrió el error.
}
}