源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

跟我学Laravel之视图 & Response

  • 时间:2021-07-08 15:37 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:跟我学Laravel之视图 & Response
[b]基本Response[/b] 从路由中返回字符串
[url=]'HomeController@index'[/url]); 返回一个重定向至控制器Action并带有参数 return Redirect::action([url=]'UserController@profile'[/url], array(1)); 返回一个重定向至控制器Action并带有命名参数 return Redirect::action([url=]'UserController@profile'[/url], array('user' => 1)); [b]视图[/b] 视图通常包含应用中的HTML代码,为分离表现层与控制器和业务逻辑提供了便利。视图存放于app/views目录。 一个简单视图案例:
[u]复制代码[/u] 代码如下:
<!-- View stored in app/views/greeting.php --> <html>     <body>         <h1>Hello, <?php echo $name; ?></h1>     </body> </html>
通过如下方法来返回该视图到浏览器:
[u]复制代码[/u] 代码如下:
Route::get('/', function() {     return View::make('greeting', array('name' => 'Taylor')); });
传递给View::make方法的第二个参数是一个数组,它将被传递给视图。 [b]传递数据给视图[/b]
[u]复制代码[/u] 代码如下:
// Using conventional approach $view = View::make('greeting')->with('name', 'Steve'); // Using Magic Methods $view = View::make('greeting')->withName('steve');
在上面的案例中,$name变量在视图内是可以访问的,其值为Steve。 你还可以在所有视图同共享同一数据: View::share('name', 'Steve'); 向视图传递子视图 或许你可能想将一个视图放入到另一个视图中。例如,将存放在app/views/child/view.php文件中的子视图传递给另一视图,如下:
[u]复制代码[/u] 代码如下:
$view = View::make('greeting')->nest('child', 'child.view'); $view = View::make('greeting')->nest('child', 'child.view', $data);
在父视图就可以输出该子视图了:
[u]复制代码[/u] 代码如下:
<html>     <body>         <h1>Hello!</h1>         <?php echo $child; ?>     </body> </html>
[b]视图合成器[/b] 视图合成器可以是回调函数或者类方法,它们在创建视图时被调用。如果你想在应用程序中,每次创建视图时都为其绑定一些数据,使用视图合成器可以将代码组织到一个地方。因此,视图合成器就好像是 “视图模型”或者是“主持人”。 定义一个视图合成器
[u]复制代码[/u] 代码如下:
View::composer('profile', function($view) {     $view->with('count', User::count()); });
现在,每次创建profile视图时,count都会被绑定到视图中。 你也可以为多个视图同时绑定一个视图合成器:
[u]复制代码[/u] 代码如下:
View::composer(array('profile','dashboard'), function($view) {     $view->with('count', User::count()); });
如果你更喜欢使用基于类的视图合成器,IoC container可以提供更多便利,如下所示: View::composer('profile', 'ProfileComposer'); 视图合成器类定义如下:
[u]复制代码[/u] 代码如下:
class ProfileComposer {     public function compose($view)     {         $view->with('count', User::count());     } }
注意,没有规定视图合成器类存放在哪里。因此,你可以任意存放,只要能在composer.json文件中指定位置并自动加载即可。 [b]视图创建器[/b] 视图 创建器 与视图合成器的工作方式几乎完全相同;区别在于当一个视图被实例化后就会立即触发视图创建器。视图创建器通过 creator 方法方便地定义:
[u]复制代码[/u] 代码如下:
View::creator('profile', function($view) {     $view->with('count', User::count()); });
[b]特殊Response[/b] 创建一个JSON Response return Response::json(array('name' => 'Steve', 'state' => 'CA')); 创建一个JSONP Response return Response::json(array('name' => 'Steve', 'state' => 'CA'))->setCallback(Input::get('callback')); 创建一个文件下载Response return Response::download($pathToFile); return Response::download($pathToFile, $status, $headers); 注意: Symfony HttpFoundation 用于处理文件下载,要求下载的文件的文件名只包含 ASCII 字符。 [b]Response 宏[/b] 如果希望自定义一个 response ,以便在你应用程序中的许多路由和控制器中进行重用,可以使用 Response::macro 方法:
[u]复制代码[/u] 代码如下:
Response::macro('caps', function($value) {     return Response::make(strtoupper($value)); });
macro 方法接受两个参数,一个指定和名称和一个闭包。当通过 Response 类调用该名称的宏时,闭包就会被执行: return Response::caps('foo'); 你可以在 app/start 目录里的文件中定义宏。或者,你也可以通过一个单独的文件组织你的宏,并将该文件包含至某个 start 文件中。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部