如果返回的是JSONP响应,也很简单,只需要在json后面再调用setCallback即可:
Route::get('testResponseJson',function(){ return response()->json(['name'=>'LaravelAcademy','passwd'=>'LaravelAcademy.org']) ->setCallback(request()->input('callback')); }); 2.3文件下载使用download方法可生成用于下载给定路径文件的响应,这里我们下载上传的文件:
Route::get('testResponseDownload',function(){ return response()->download( realpath(base_path('public/images')).'/laravel-5-1.jpg', 'Laravel学院.jpg' ); });在浏览器中访问:8000/testResponseDownload,页面将会下载laravel-5-1.jpg文件并保存为Laravel学院.jpg。
3、 RedirectResponse篇重定向响应是 Illuminate\Http\RedirectResponse类的实例,我们通常使用全局帮助函数redirect来生成 RedirectResponse实例。和response类似,redirect函数如果接收参数则调用的是Illuminate\Routing\Redirector类的to方法,如果无参调用则返回的是Redirector对象实例。
3.1 基本重定向 Route::get('dashboard',function(){ returnredirect('home/dashboard'); });如果要重定向到上一个位置,则使用back方法:
Route::post('user/profile',function(){ //验证请求... returnback()->withInput(); }); 3.2重定向到命名路由使用route方法重定向到命名路由:
Route::get('/hello/laravelacademy',['as'=>'academy',function(){ return 'Hello LaravelAcademy'; }]); Route::get('testResponseRedirect',function(){ return redirect()->route('academy'); });在浏览器中访问:8000/testResponseRedirect,页面会跳转到:8000/hello/laravelacademy并输出:
Hello LaravelAcademy如果命名路由中有参数,那么我们可以在route中传入参数:
Route::get('/hello/laravelacademy/{id}',['as'=>'academy',function($id){ return 'Hello LaravelAcademy '.$id; }]); Route::get('testResponseRedirect',function(){ return redirect()->route('academy',100); });在浏览器中访问:8000/testResponseRedirect,页面会跳转到:8000/hello/laravelacademy/100并输出:
Hello LaravelAcademy 100 3.3 重定向到控制器动作使用action方法重定向到控制器动作:
Route::resource('post','PostController'); Route::get('testResponseRedirect',function(){ return redirect()->action('PostController@index'); });在浏览器中访问:8000/testResponseRedirect,则页面会跳转到:8000/post并输出对应内容。
当然也可以传递参数到action方法:
Route::get('testResponseRedirect',function(){ return redirect()->action('PostController@show',[1]); }); 3.4带一次性Session数据的重定向使用with方法可以携带一次性session数据到重定向请求页面(一次性session数据即使用后立即销毁的session数据项):
Route::post('user/profile',function(){ //更新用户属性... returnredirect('dashboard')->with('status','Profileupdated!'); });这种特性通常在提交表单验证失败返回错误信息时很有用。