feldoe / laravel-export-progress
为您的导出添加进度广播事件
v1.1.7
2024-08-19 12:24 UTC
Requires
- php: ^8.2
- laravel/framework: ^10.0|^11.0
- maatwebsite/excel: ^3.1
Requires (Dev)
- nunomaduro/larastan: ^2.8
- orchestra/testbench: ^8.0
- phpstan/extension-installer: ^1.2.0
README
关于 Laravel 导出进度
示例
final class UsersExport extends AbstractExport implements FromQuery { /** * @param User $user */ public function map($user): array { try { $this->sendProgressEventIfNeeded(); } catch (Exception $exception) { Log::error(__('Failed to send progress event => :message', ['message' => $exception->getMessage()])); } return [ $user->id, $user->username, $user->email, ]; } public function query(): Builder { return User::query(); } }
const startExport = (data) => {
exportSystem.start(data.uuid, data.name)
}
Echo.private(`exports.${this.user.id}`)
.listen('.export.progressed', e => {
exportSystem.progress(
e.uuid,
e.type,
e.model?.name,
e.progress,
e.estimated_duration
)
})
.listen('.export.completed', e => {
exportStore.finish(payload.uuid)
notify({
title: tr(`success.${payload.type}`),
type: 'valid'
})
window.open(payload.url)
})
.listen('.export.failed', e => {
exportSystem.fail(
e.uuid,
e.reason.message
)
})
许可证
Laravel 导出进度是开源软件,采用MIT 许可协议。