代码改变世界

每天laravel[028]-laravel 基础知识 --- 响应

2017-06-03 14:57  吃饱了才能撑着  阅读(78)  评论(0)    收藏  举报
HTTP响应
 
1      基础响应
    
最简单的响应
          
          Route::get('/',function(){
               return "Hello world";
          });
使用响应方式进行的响应 
 
     use Illuminate\Http\Response;
     Route::get('home',function(){
          return(new Response($content,$status))->header('Content-Type',$value));
     });
 
使用response helper 方法进行响应
 
     Route::('home',function(){
          return response($content,$status)->header('Content-Type',$value);
     });
 
可以使用多次header设置更多头信息
 
     return response($content)
          ->header('Content-Type',$type)
          ->header('X-Header-One','Header Value')
          ->header('X-Header-Two','Header Value');
 
增加 cookie 信息进行回复
     return response($content)->withCookie('name','value');
 
     其中withCookie 参数
     ->withCookie($name,$value,$minutes,$path,$domain,$secure,$httpOnly);
 
     默认的cookie 都是加密的,如果想不让我们的cookie值加密,可以进行设置
对于设置的位置就是 App\Http\Middleware\EncyptCookies 里面
     protected $except = [
          'cookie_name',
     ]
 
2      其它响应类型
     view 方式的响应方式
     例如:
     return response()->view('hello',$data)->header('Content-Type',$type);
 
JSON 方式响应
     return response()->json(['name'=>'Abigail','state'=>'CA']);
 
JSONP跨越响应方式
     return response()->json(['name'=>'lijingshan','state'=>'CA'])->setCallback($request->input('callback'));
 
文件下载
     return response()->download($pathToFile);
     return response()->download($pathToFile,$name,$headers);
 
3      跳转
常规跳转
     return redirect('home/url');
带数据信息跳转回去
     return back()->withInput();
根据路由名字进行跳转
     return redirect()->route('login');
     return redirect()->route('profile',[1]);
     return redirect()->route('profile',[$user]);
直接跳转到控制器方法
     return redirect()->action('HomeController@index');
     return redirect()->action('HomeController@index',[1]);
带着session信息跳转
     return redirect('url_route')->with('status','Profile updated');
模版内的用法:
     @if(session('status'))
          <div class="alert alert-success">
               {{session('status')}}
          </div>
     @endif
 
4      响应指令函数封装
 
如果大家拥有各种神奇的目标,可以 在 Illuminate\Contracts\Routing\ResponseFactory 里面的boot 方法里面,加上
 
public function boot(ResponseFactory $factory){
     $factory->macro('caps',function($value)use($factory){
          return $factory->make(stroupper($value));
     });
}
 
使用过程就可以使用;
return response()->caps('foo');
 
php初学者---千锋php课堂笔记