Php 如何将包含动态数据的html blade从数据库转换为laravel中的PDF?
我正在尝试编写代码,使用laravel中的tcpdf将html blade转换为PDF 这是我用来转换的控制器代码:Php 如何将包含动态数据的html blade从数据库转换为laravel中的PDF?,php,html,laravel,Php,Html,Laravel,我正在尝试编写代码,使用laravel中的tcpdf将html blade转换为PDF 这是我用来转换的控制器代码: public function htmlToPDF() { $view=view('PdfDemo'); $html_content =$view->render(); PDF::SetTitle('Sample PDF'); PDF::AddPage(); PDF::writeHTML($html_content, true,
public function htmlToPDF()
{
$view=view('PdfDemo');
$html_content =$view->render();
PDF::SetTitle('Sample PDF');
PDF::AddPage();
PDF::writeHTML($html_content, true, false, true, false, '');
PDF::Output('SamplePDF.pdf');
}
当我在视图(PdfDemo)中放置静态数据时,所有内容都会成功运行,但问题是当我在刀片服务器中放置带有一些变量的动态数据时,如下所示:
<table>
<?php $i=0?>
@if(count($names))
@foreach($names as $n)
<tr><td>
<label>Name{{$i}}:</label>{{$n}}</td>
<tr><td><hr></td></tr>
<?php $index = $index+1; ?>
@endforeach
@endif
</table>
在这种情况下,刀片显示完全符合我的要求,但当我尝试转换为PDF时,会显示错误$name not defined。请执行以下操作:
return view('PdfDemo',compact('names'));
$view = View::make('PdfDemo',compact('names'));
$contents = (string) $view;
// or
$contents = $view->render();
使用View::make()
时,在添加动态变量的值后,它会将刀片文件的HTML代码作为HTML内容获取。执行以下操作:
return view('PdfDemo',compact('names'));
$view = View::make('PdfDemo',compact('names'));
$contents = (string) $view;
// or
$contents = $view->render();
当您使用
View::make()
时,在添加动态变量的值后,它会将刀片文件的HTML代码作为HTML内容获取。您没有在htmlToPDF
函数中将数据传递给视图
尝试将其更改为:
public function htmlToPDF($names)
{
$view=view('PdfDemo', compact('names');
$html_content =$view->render();
PDF::SetTitle('Sample PDF');
PDF::AddPage();
PDF::writeHTML($html_content, true, false, true, false, '');
PDF::Output('SamplePDF.pdf');
}
您没有在
htmlToPDF
函数中将数据传递给视图
尝试将其更改为:
public function htmlToPDF($names)
{
$view=view('PdfDemo', compact('names');
$html_content =$view->render();
PDF::SetTitle('Sample PDF');
PDF::AddPage();
PDF::writeHTML($html_content, true, false, true, false, '');
PDF::Output('SamplePDF.pdf');
}
与问题无关,但在foreach使用
$index
,这样你就不需要在blade上调用php。你是对的,我不会与问题相关,但在foreach使用$index
,这样你就不需要在blade上调用php。你是对的,我会这样做,但它不起作用,我试过了,但一开始什么都没有改变。当我试过的时候,问题仍然存在,但我把给出名称的select语句放在了convert函数中,并按照您编写的操作,然后没有出现错误,但它的处理过程仍然显示了这个错误:超过了60秒的最长执行时间这是一个完全不同的问题。您应该在php.ini
文件或设置时间限制(0)中增加最大执行时间代码>最终它在不更改执行时间的情况下解决了^ ^,时间问题出现在我的代码中,因为我有一些不必要的引导div,当我删除它时,代码成功运行,非常感谢^ ^如果我放置或删除make,它在这两种情况下都能工作,但是你能告诉我何时应该使用make吗?这是我想要的,但它不起作用,我试过了,但一开始什么都没有改变。当我试过的时候,问题仍然存在,但我把给出名称的select语句放在了convert函数中,并按照您编写的操作,然后没有出现错误,但它的处理过程仍然显示了这个错误:超过了60秒的最长执行时间这是一个完全不同的问题。您应该在php.ini
文件或设置时间限制(0)中增加最大执行时间代码>最终它在不更改执行时间的情况下解决了^ ^,时间问题出现在我的代码中,因为我有一些不必要的引导div,当我删除它时,代码成功运行,非常感谢^ ^如果我放置或删除make,它在这两种情况下都能工作,但是您能告诉我何时应该使用make吗?无更改:我也试着在这个函数上加上相同的SELECT语句,然后在你写的时候加上紧凑的名字,直到它给出为止:60秒的最大执行时间,你能把你的部分添加到控制器中吗?现在,它成功地工作了。^ ^,我把select语句添加到函数和紧凑的名称中,而不把它添加为PAR。函数的参数,关于执行时间问题,我删除了一些额外的标记作为不必要的引导div,然后一切都变好了,谢谢:))需要在这里添加一个右括号$view=view('PdfDemo',compact('names');没有变化:我也试着在这个函数上加上相同的SELECT语句,然后在你写的时候加上紧凑的名字,直到它给出为止:60秒的最大执行时间,你能把你的部分添加到控制器中吗?现在,它成功地工作了。^ ^,我把select语句添加到函数和紧凑的名称中,而不把它添加为PAR。函数的参数,以及关于执行时间的问题,我删除了一些额外的标记作为不必要的引导div,然后一切都变好了,谢谢:))需要在这里添加一个右括号$view=view('PdfDemo',compact('names');