Laravel 4问题与php标题和控制器中的返回下载

时间:2013-07-24 05:08:21

标签: laravel laravel-4

我正在使用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);
    }
}

2 个答案:

答案 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应用配置有关,但没有时间进一步调查。