将包含路径的param传递给控制器

时间:2015-02-24 12:33:00

标签: laravel laravel-4 routes parameter-passing laravel-routing

我试图在Laravel 4中传递包含从表单到控制器函数的路径的变量,目的是下载图像。我尝试了很多东西,但没有任何对我有用。如果我没有在路径中传递参数,我会得到一个缺失的参数错误,如果我在路径中传递参数,我会得到一个NotFoundHttpException。

这是我的代码:

查看表单:

{{ Form::open(array('route' => array('download', $myPath))) }}
    {{ Form::submit('Download', array('class' => 'generator')); }}
{{ Form::close() }}

路线:

Route::post('/download/{myPath}', array('uses' => 'ImagesController@download', 'as' => 'download'));

ImagesController功能:

public function download($myPath){
    return Response::download($myPath);
}

当我点击提交时,我使用NotFoundHttpException获取这样的URL:

  

http://localhost/resizer/public/download/images/myimage.jpg

我不明白我错过了什么。

1 个答案:

答案 0 :(得分:0)

您实际上发布了两个变量。试试这个

Route::post('/download/{myFolder}/{myFile}', array('uses' => 'ImagesController@download', 'as' => 'download'));

并在您的控制器中

 public function download($myFolder, $myFile){
        return Response::download($myFolder.'/'.$myFile);
}