Comment puis-je rediriger après le téléchargement dans Laravel?
Je suis en utilisant maatwebsite/excel bibliothèque pour créer des fichiers excel puis de télécharger mon fichier
dans mon contrôleur, je fais comme ceci:
public function todas()
{
$input = Input::all();
if(isset($input['todos'])&&($input['todos']!=0))
{
set_time_limit(0);
$datainicio = DB::table('tb_periodo')->where('cod', $input['todos'])->pluck('periodo_inicio');
$datafinal = DB::table('tb_periodo')->where('cod', $input['todos'])->pluck('periodo_fim');
$mes = DB::table('tb_periodo')->where('cod', $input['todos'])->pluck('mes_referencia');
$horarioQuery = $this->horario->with(array('funcionario', 'item_contabil'))
->whereBetween('data', array($datainicio, $datafinal))
->whereNull('deleted_at')
->orderBy('cod_funcionario')
->orderBy('data', 'ASC')
->get();
$horarios = reset($horarioQuery);
$count = count($horarios);
if($horarios==null)
return Redirect::route('relatorios.todas')->withErrors(['não existem marcações para este período']);
$funcionarios = $this->funcionario->all();
$datainicio = Carbon::createFromFormat('Y-m-d H:i:s', $datainicio);
$datafinal = Carbon::createFromFormat('Y-m-d H:i:s', $datafinal);
$nome = 'Marcações'.$mes.'-'.Carbon::now()->year;
$this->horario->allToExcel($nome, $horarios);
return View::make('relatorios.todashow', compact('funcionarios', 'datainicio', 'datafinal', 'horarios', 'count', 'nome'));
}
else
{
return Redirect::route('relatorios.todas')->withErrors(['Selecione um período!']);
}
}
qui est ma fonction pour générer un fichier excel :
public static function allToExcel($nome, $horarios)
{
Excel::create($nome , function ($excel) use ($horarios) {
$excel->sheet('Marcações', function ($sheet) use ($horarios) {
$sheet->row(1, array(
'Unidade',
'Nome',
'Função',
'Data',
'Hora Faturada',
'Hora Contratada',
'Horas Trabalhadas',
'Horas Extras',
'Tempo Exposicao',
'Atividade',
'Item Contabil',
'Observacoes'
));
$sheet->row(1, function($row) {
$row->setBackground('#2A8005');
$row->setFontColor('#ffffff');
$row->setFontWeight('bold');
});
$i = 2;
foreach ($horarios as $horario) {
if($horario->funcionario->funcao_qt != null)
$funcao = $horario->funcionario->funcao_qt;
else
$funcao = $horario->funcionario->funcao_a5;
$sheet->row($i, array(
$horario->unidade,
$horario->funcionario->nome,
$funcao,
$horario->data->format('d/m/Y'),
$horario->hora_faturada->format('H:i'),
$horario->hora_contratada,
$horario->getWorkedHours()->format('H:i'),
$horario->getExtraHours()->format('H:i'),
$horario->tempo_exposicao ?: "-",
$horario->atividade,
$horario->item_contabil->CTD_DESC01,
$horario->observacoes
));
if($i % 2 != 0)
{
$sheet->row($i, function($row) {
$row->setBackground('#D1D1D1');
});
}
$i++;
}
});
})->download('xls');
}
mais après j'ai télécharger le fichier excel je ne peux pas rediriger vers une route ou de la vue et j'ai Aussi essayé d'utiliser :
routes:
Route::post('relatorios/todas', array('as' => 'relatorios.todas', 'after' => 'voltar', 'uses' => 'ReportsController@todas'));
filtre:
Route::filter('voltar', function()
{
return Redirect::back()->with('message', '<p class="bg-success"><b>Relatório gerado com sucesso</b></p>');
});
mais n'a pas fonctionné de toute façon, ont une autre façon de rediriger une fois le téléchargement de mon fichier ??!
thx d'avance!
Vous devez vous connecter pour publier un commentaire.
Il ne peut pas être fait. Le problème est que si vous envoyez une instruction de téléchargement du navigateur de l'utilisateur, vous sont, comme une question de fait, l'envoi d'une réponse et vous pouvez envoyer qu'une seule réponse en retour.
Ce que vous pourriez faire est d'abord de rediriger vos utilisateurs à la "finale" de la page et dans la page démarrer le téléchargement. Le code serait quelque chose comme:
Puis dans la nouvelle page, vous aurez quelques options:
De sorte que vous pouvez dans votre mise en page faire quelque chose comme:
Aussi, jetez un oeil à cette réponse: PHP de générer des fichiers pour les télécharger ensuite rediriger
qui a travaillé
J'ai donné à partir de l'utilisation d'ajax et juste essayé avec des parcours
mon contrôleur
vue:
c'est résolu pour moi, parce que ne pas charger une autre page et télécharger le fichier correct.
merci pour l'aide!!