我正在使用KnpLabs Snappy PDF库在Laravel 4中生成PDF。当我明确地将所有代码放在routes.php文件中时,所有工作都很出色,但是当我路由到控制器和方法时,我的代码不再有效?我错过了什么,或者如果在控制器中执行此代码,我还需要做更多的事情。
路由'test1'按预期工作,路由'test2'刷新浏览器并且不显示任何内容,甚至没有任何错误。
route.php
<?php
Route::get('test1', function()
{
$pdf = new Knp\Snappy\Pdf('/path/to/vendor/google/wkhtmltopdf-amd64/wkhtmltopdf-amd64');
$headers = array(
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'attachment; filename="file22.pdf"',
);
return Response::make($pdf->getOutputFromHtml('<h1>Works!</h1>'), 200, $headers);
});
Route::group(array('prefix' => 'trial'), function()
{
Route::get('test2', 'MyController@download');
});
MyController.php
<?php
class MyController extends \BaseController {
public function download()
{
$pdf = new Knp\Snappy\Pdf('/path/to/vendor/google/wkhtmltopdf-amd64/wkhtmltopdf-amd64');
$headers = array(
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'attachment; filename="file22.pdf"',
);
return Response::make($pdf->getOutputFromHtml('<h1>Works!</h1>'), 200, $headers);
}
}
答案 0 :(得分:0)
<强>解决即可。出于某种原因,download()
方法的内容如果在Route::resource()
或Route::group()
中指定,则无效。
当我明确说明它自己的路线时,一切正常。
像这样:Route::get('trial/test2', 'MyController@download');
我不知道为什么会这样,但是如果其他人能够对这背后的原因有所了解,我会非常感兴趣。
答案 1 :(得分:0)
我注意到你需要(有时?)用前导斜杠指定url:
Route::group(array('prefix' => 'trial'), function()
{
Route::get('/test2', 'MyController@download');
});
虽然官方文件说明/另有说明。
可能与Laravel应用配置有关,但没有时间进一步调查。