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

Passing a param containing a path to a controller

我试图传递一个变量,该变量包含从表单到控制器函数的路径 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);
}

当我点击提交时,我得到了一个 URL 这样的 NotFoundHttpException:

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

我不明白我错过了什么。

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

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

并在您的控制器中

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