有没有一种方法可以使视图运行而不必在laravel中的浏览器中显示视图?

时间:2020-02-11 18:40:57

标签: javascript php laravel view chart.js

我解释一下,我有一个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个图表,并用所需的信息更新图表。这是刀片视图。

所以我的问题是,是否有一种方法可以通过使用视图和下载为png的方式生成图表,但是在整个浏览器中都不会通过laravel看到它。

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

如果我忘记提及某些事情或信息,请问我。谢谢大家。

1 个答案:

答案 0 :(得分:0)

我明白了您的要求,您可以使用render()方法获得编译后的刀片模板,即:HTML格式,如下所示。

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

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

一种选择是使用库从服务器端(即PHP本身)呈现图表(您将不得不找到自己,但一个链接为here),然后将呈现的html传递给{{ 1}}来制作pdf,但是事实是,服务器端没有好的图表选项。

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