跟我学Laravel之视图 & Response

基本Response

从路由中返回字符串

代码如下:

创建自定义Response

Response类继承自Symfony\Component\HttpFoundation\Response类,提供了多种方法用于构建HTTP Response。

代码如下:

$response->header('Content-Type',$value);

return $response;

如果需要访问 Response 类的方法,但又要返回一个视图作为响应的内容,通过使用 Response::view 方法可以很容易实现:

代码如下:
header('Content-Type',$type);

在Response中添加Cookie

代码如下:

return Response::make($content)->withCookie($cookie);

重定向

返回一个重定向

return Redirect::to('user/login'); 返回一个带有数据的重定向

return Redirect::to('user/login')->with('message','Login Failed'); 注意: with 方法将数据写到了Session中,通过Session::get 方法即可获取该数据。 返回一个重定向至命名路由

return Redirect::route('login'); 返回一个重定向至带有参数的命名路由

return Redirect::route('profile',array(1)); 返回一个重定向至带有命名参数的命名路由

return Redirect::route('profile',array('user' => 1)); 返回一个重定向至控制器Action

return Redirect::action(); 返回一个重定向至控制器Action并带有参数

return Redirect::action(,array(1)); 返回一个重定向至控制器Action并带有命名参数

return Redirect::action(,array('user' => 1));

视图

视图通常包含应用中的HTML代码,为分离表现层与控制器和业务逻辑提供了便利。视图存放于app/views目录。

一个简单视图案例:

代码如下:

Hello,

通过如下方法来返回该视图到浏览器:

代码如下:
'Taylor')); });

传递给View::make方法的第二个参数是一个数组,它将被传递给视图。

传递数据给视图

代码如下:
with('name','Steve');

// Using Magic Methods $view = View::make('greeting')->withName('steve');

在上面的案例中,$name变量在视图内是可以访问的,其值为Steve。

你还可以在所有视图同共享同一数据:

View::share('name','Steve');

向视图传递子视图

或许你可能想将一个视图放入到另一个视图中。例如,将存放在app/views/child/view.php文件中的子视图传递给另一视图,如下:

代码如下:
nest('child','child.view');

$view = View::make('greeting')->nest('child','child.view',$data);

在父视图就可以输出该子视图了:

代码如下:

Hello!

视图合成器

视图合成器可以是回调函数或者类方法,它们在创建视图时被调用。如果你想在应用程序中,每次创建视图时都为其绑定一些数据,使用视图合成器可以将代码组织到一个地方。因此,视图合成器就好像是 “视图模型”或者是“主持人”。

定义一个视图合成器

代码如下:
with('count',User::count()); });

现在,每次创建profile视图时,count都会被绑定到视图中。

你也可以为多个视图同时绑定一个视图合成器:

代码如下:

如果你更喜欢使用基于类的视图合成器,IoC container可以提供更多便利,如下所示:

View::composer('profile','ProfileComposer');

视图合成器类定义如下:

代码如下:

public function compose($view) { $view->with('count',User::count()); }

}

注意,没有规定视图合成器类存放在哪里。因此,你可以任意存放,只要能在composer.json文件中指定位置并自动加载即可。

视图创建器

视图 创建器 与视图合成器的工作方式几乎完全相同;区别在于当一个视图被实例化后就会立即触发视图创建器。视图创建器通过 creator 方法方便地定义:

代码如下:

特殊Response

创建一个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 字符。

Response 宏

如果希望自定义一个 response ,以便在你应用程序中的许多路由和控制器中进行重用,可以使用 Response::macro 方法:

代码如下:

macro 方法接受两个参数,一个指定和名称和一个闭包。当通过 Response 类调用该名称的宏时,闭包就会被执行:

return Response::caps('foo'); 你可以在 app/start 目录里的文件中定义宏。或者,你也可以通过一个单独的文件组织你的宏,并将该文件包含至某个 start 文件中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


laravel的dd函数不生效怎么办
看不懂laravel文档咋办
安装laravel框架出现command怎么办
Laravel开发API怎么使用事务
laravel怎么构建复杂查询条件
laravel如何实现防止被下载
为什么laravel比yii火
一些常见的Laravel定时任务不运行的问题
laravel用路由有什么好处
composer无法安装laravel怎么办
laravel现在还用吗
laravel怎么替换主键id
laravel的appurl有什么用
如何修改Laravel的报错输出形式
laravel怎么避免foreach查表
laravel怎样操作数据库
laravel怎么截取字符串
laravel 是国内的吗
laravel怎么设置请求头
浅析Laravel社区Redis组件报错的问题和解决方法