You are here
Laravel响应和视图 以及 传参 传值 传递参数 控制器让 blade 模板共享数据 有大用
星期五, 2016-04-15 14:18 — shiping1
基础响应 //直接响应字符串 Route::get('example/test20', function(){ return 'hello world'; }); //定制HTTP响应 Route::get('example/test21', function(){ return Response::make('内容不存在', 404); }); //响应视图 Route::get('example/test22', function(){ return Response::view('test22'); }); //给响应添加cookie Route::get('example/test23', function(){ return Response::view('test22')->withCookie(Cookie::make('key', 'this is value')); 响应重定向 //响应重定向 Route::get('example/test24', function(){ return Redirect::to('example/test21')->with('username', 'xiaoming'); }); //带上数据的重定向 Route::get('example/test25', function(){ //with 方法将数据写到了Session中,通过Session::get 方法即可获取该数据。 return Redirect::to('example/test21')->with('username', 'xiaoming'); }); //重定向至命名路由 return Redirect::route('login'); //重定向值带有命名参数的命名路由 return Redirect::route('profile', array('user' => 1)); //重定向至指定的控制器方法 return Redirect::action('HomeController@index'); //重定向至指定的控制器方法,并可带上参数 return Redirect::action('UserController@profile', array('user' => 1)); 响应视图 //响应视图并传递参数 Route::get('example/test30', function(){ //第一种方式 return View::make('test30', array('name' => 'xiaoming')); //第二种方式 //return View::make('test30')->with('name', 'xiaoming2'); //第三种方式 //return View::make('test30')->withName('xiaoming3'); //第四种方式,注:在所有视图中共享同一数据 //View::share('name', 'Steve'); // 在控制器中 就可以直接使用
//或者 view()->share('name', 'Steve'); }); //在视图中传入子视图 Route::get('example/test31', function(){ $data = array('name' => 'john'); //子视图放在app/views/child/child_view.php, 你也可以向其传递变量 return View::make('test30')->with($data)->nest('child', 'child.child_view', $data); }); 视图组件或视图合成器 如果你希望视图被创建时,就绑上指定数据,可以定义视图组件: View::composer('profile', function($view) { $view->with('count', User::count()); }); 给视图组件添加多视图: View::composer(array('profile','dashboard'), function($view) { $view->with('count', User::count()); }); 如果你使用基于类的视图组件: View::composer('profile', 'ProfileComposer'); 视图组件类这样创建: class ProfileComposer { public function compose($view) { $view->with('count', User::count()); } } 特殊响应 //创建JSON响应 return Response::json(array('name' => 'Steve', 'state' => 'CA')); //创建JSONP响应 return Response::json(array('name' => 'Steve', 'state' => 'CA'))->setCallback(Input::get('callback')); //文件下载响应 return Response::download($pathToFile); return Response::download($pathToFile, $name, $headers); 注意:管理文件下载的类库Symfony HttpFoundation要求文件名是ASCII编码的。 响应宏,使用Response::macro自定义响应 Response::macro('caps', function($value) { return Response::make(strtoupper($value)); }); macro 方法接受两个参数,一个指定宏名称和一个闭包。当通过 Response 类调用该名称的宏时,闭包就会被执行: return Response::caps('foo'); 你可以在 app/start 目录里的文件中定义宏。或者,你也可以通过一个单独的文件组织你的宏,并将该文件包含至某个 start 文件中。 转载于http://www.phpddt.com/php/laravel-response.html
来自 http://my.oschina.net/u/2444569/blog/500837