aso*_*zal 2 php laravel laravel-5
我需要在我的laravel 5应用程序上传递一个完整的url作为路由参数,事情如下.我正在创建一个缩略图服务,让原始照片的网址调整大小并将其流回浏览器.例如,我需要img源有一个像这样的src:
<img src="http://host.com/generate-thumb/300x300/http://host.com/images/media1.png"/>
Run Code Online (Sandbox Code Playgroud)
所以在控制器中我可以像这样得到原始图像网址:
public function thumbAction(Request $request, $size, $original_url){
dd($size, $original_url);
}
Run Code Online (Sandbox Code Playgroud)
我的路线定义如下:
Route::get('/generate-thumb/{size}/{original_url}', array(
'as' => 'thumb_hook',
'uses' => 'ThumbController@thumbAction'
));
Run Code Online (Sandbox Code Playgroud)
我这样做了,但服务器响应404错误.
我还在where路由定义的方法中指定了一个url模式.
有谁知道怎么做?
您遇到的问题是url参数默认情况下由正斜杠(/)分隔.由于您的某个参数将包含正斜杠,因此会遇到特殊情况.
根据您当前的路由定义,并给出url http://host.com/generate-thumb/300x300/http://host.com/images/media1.png,会发生什么,您的size参数得到300x300,您的original_url参数得到http:,然后有更多的参数.由于您没有这样定义的路线,因此您将获得404.
为了允许参数接受正斜杠,您需要为该参数定义正则表达式约束.你需要像这样定义你的路线:
Route::get('/generate-thumb/{size}/{original_url}', array(
'as' => 'thumb_hook',
'uses' => 'ThumbController@thumbAction'
))
->where('original_url', '.*');
Run Code Online (Sandbox Code Playgroud)
此.*约束将允许此参数接受任何字符,包括正斜杠.请注意,执行此操作时,此参数将需要是最后定义的参数,因为它会占用所有正斜杠,并且您将无法分隔任何其他路径参数.
| 归档时间: |
|
| 查看次数: |
2824 次 |
| 最近记录: |