Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将包含动态数据的html blade从数据库转换为laravel中的PDF?_Php_Html_Laravel - Fatal编程技术网

Php 如何将包含动态数据的html blade从数据库转换为laravel中的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,

我正在尝试编写代码,使用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, 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');