跟我学Laravel之视图 & Response
《:跟我学Laravel之视图 & Response》要点: PHP应用基本Response 从路由中返回字符串
代码如下:
Route::get('/',function() { ??? return 'Hello World'; }); 创建自定义Response Response类继承自SymfonyComponentHttpFoundationResponse类,提供了多种办法用于构建HTTP Response.
代码如下:
$response = Response::make($contents,$statusCode); $response->header('Content-Type',$value); return $response; 如果需要拜访 Response 类的方法,但又要返回一个视图作为响应的内容,通过使用 Response::view 方法可以很容易实现:
代码如下:
return Response::view('hello')->header('Content-Type',$type); 在Response中添加Cookie
代码如下:
$cookie = Cookie::make('name','value'); return Response::make($content)->withCookie($cookie); 重定向 返回一个重定向 return Redirect::to('user/login'); return Redirect::to('user/login')->with('message','Login Failed'); return Redirect::route('login'); return Redirect::route('profile',array(1)); return Redirect::route('profile',array('user' => 1)); return Redirect::action('HomeController@index'); return Redirect::action('UserController@profile',array(1)); return Redirect::action('UserController@profile',array('user' => 1)); 视图 视图通常包括应用中的HTML代码,为分离表现层与控制器和业务逻辑提供了便利.视图存放于app/views目录. 一个简单视图案例:
代码如下:
<!-- View stored in app/views/greeting.php --> <html> 通过如下办法来返回该视图到浏览器:
代码如下:
Route::get('/',function() { ??? return View::make('greeting',array('name' => 'Taylor')); }); 传递给View::make办法的第二个参数是一个数组,它将被传递给视图. 传递数据给视图
代码如下:
// Using conventional approach $view = View::make('greeting')->with('name','Steve'); // Using Magic Methods 在上面的案例中,$name变量在视图内是可以拜访的,其值为Steve. 你还可以在所有视图同共享同一数据: View::share('name','Steve'); 向视图传递子视图 或许你可能想将一个视图放入到另一个视图中.例如,将存放在app/views/child/view.php文件中的子视图传递给另一视图,如下:
代码如下:
$view = View::make('greeting')->nest('child','child.view'); $view = View::make('greeting')->nest('child','child.view',$data); 在父视图就可以输出该子视图了:
代码如下:
<html> ??? <body> ??????? <h1>Hello!</h1> ??????? <?php echo $child; ?> ??? </body> </html> 视图合成器 视图合成器可以是回调函数或者类办法,它们在创建视图时被调用.如果你想在应用程序中,每次创建视图时都为其绑定一些数据,使用视图合成器可以将代码组织到一个地方.因此,视图合成器就好像是 “视图模型”或者是“主持人”. 定义一个视图合成器
代码如下:
View::composer('profile',function($view) { ??? $view->with('count',User::count()); }); 现在,每次创建profile视图时,count都会被绑定到视图中. 你也可以为多个视图同时绑定一个视图合成器:
代码如下:
View::composer(array('profile','dashboard'),User::count()); }); 如果你更喜欢使用基于类的视图合成器,IoC container可以提供更多便利,如下所示: View::composer('profile','ProfileComposer'); 视图合成器类定义如下:
代码如下:
class ProfileComposer { ??? public function compose($view) } 注意,没有规定视图合成器类存放在哪里.因此,你可以任意存放,只要能在composer.json文件中指定位置并自动加载即可. 视图创建器 视图 创建器 与视图合成器的工作方式几乎完全相同;区别在于当一个视图被实例化后就会立即触发视图创建器.视图创建器通过 creator 办法方便地定义:
代码如下:
View::creator('profile',User::count()); }); 特殊Response 创建一个JSON Response return Response::json(array('name' => 'Steve','state' => 'CA')); return Response::json(array('name' => 'Steve','state' => 'CA'))->setCallback(Input::get('callback')); return Response::download($pathToFile); return Response::download($pathToFile,$status,$headers); Response 宏 如果希望自定义一个 response,以便在你应用程序中的许多路由和控制器中进行重用,可以使用 Response::macro 办法:
代码如下:
Response::macro('caps',function($value) { ??? return Response::make(strtoupper($value)); }); macro 办法接受两个参数,一个指定和名称和一个闭包.当通过 Response 类调用该名称的宏时,闭包就会被执行: return Response::caps('foo'); 欢迎参与《:跟我学Laravel之视图 & Response》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |