【问题标题】:Is there a way to make a view run without having to show the view in the browser in laravel?有没有办法让视图运行而不必在 laravel 的浏览器中显示视图?
【发布时间】:2020-05-27 05:59:07
【问题描述】:

我解释一下,我有一个 Laravel 项目,我需要在其中制作报告并在浏览器中显示以供下载。该报告需要有一些 Chartjs 制作的图表,这就是我所做的。

我的路线:

Route::get('/informe', 'informeController@procesar');
Route::get('/graph', 'informeController@graph');
Route::post('/save', 'informeController@graphStore');
Route::get('/up', 'informeController@graphUpdate');

一个非常大的控制器,但谁有这个伪代码。

public function graph()
{
    return view('graphMaker');
}
public function graphUpdate(Request $request)
{
    //get data from a database and send it to a view that requested data
    return response()->json($data);
}

public function graphStore(Request $request){
    //save the images obtained from the view using this commands in JS
    //ctx2 = document.getElementById('donutchart');
    //img = ctx2.toDataURL('image/png');

    return route('/informe');
}

public function procesar(){
    //get more data from the database and generate a pdf using mpdf
}

最后,该视图使用 Chartjs 和一个 JS 代码在 HTML 中制作 2 个图表,该代码使用所需信息更新图表。这是刀片视图。

所以我的问题是,是否有一种方法可以通过 laravel 使用视图和下载为 png 但在浏览器中不显示它来生成图表。

毕竟,如何在 Bowser 中显示 pdf?因为在进行查询时,它不会显示procesar() 输出($ mpdf-> Output ();)。

如果我忘记提及某事或需要信息,请询问我。谢谢大家。

【问题讨论】:

  • 如果您已经将 pdf 保存到文件系统,您可以:return response()->download($pathToFile)documentation。如果没有,请查看同一页面上的流式下载。
  • 我试过了,没用。 $pathtofile 必须是完整路径还是可以是相对路径?

标签: javascript php laravel view chart.js


【解决方案1】:

我明白你在问什么,你可以得到编译好的刀片模板,即:使用render() 方法的 HTML 格式,如下所示。

$html = view('graphMaker')->render()

但问题是您尝试制作的图表是使用chart.js 完成的,这是一个客户端库。这意味着您需要一个浏览器来绘制实际的图表。

一种选择是使用库从服务器端(即:在 PHP 本身中)呈现图表(您必须自己找到它,但一个链接是 here)并将呈现的 html 传递给 Mpdf制作pdf,但事实是服务器端没有好的图表选项。

我认为最好的办法是使用chrome driver 加载 HTML 并截屏(如果我没记错,您可以直接从中制作 PDF)

【讨论】:

  • 哦,谢谢!这正是我想要的。无论如何,非常感谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多