首页 > 作文

跟我学Laravel之视图 & Response

更新时间:2023-04-06 09:25:21 阅读: 评论:0

基本respon

从路由中返回字符串

复制代码 代码如下:

route::get(‘/’, fu夏尔米出招表nction()

{

return ‘hello world’;

});

创建自定义respon

respon类继承自symfony\component\httpfoundation\respon类,提供了多种方法用于构建http respon。

复制代码 代码如下:

$respon = respon::make($contents, $statuscode);

$respon->header(‘content-type’, $value);

return $respon;

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

复制代码 代码如下:

return respon::view(‘hello’)->header(‘content-type’, $type);

在respon中添加cookie

复制代码 代码如下:

$cookie = cookie::make(‘name’, ‘value’);

return respon::make($content)->withcookie($cookie);

重定向

返回一个重定向

return redirect::to(‘ur/login’);
返回一个带有数据的重定向

return redirect::to(‘ur/login’)->with(‘message’, ‘login failed’);
注意: with 方法将数据写到了ssion中,通过ssion::get 方法即可获取该数据。
返回一个重定向至命名路由

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

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

return redirect::route(‘profile’, array(‘ur’ => 1));
返回一个重定向至控制器action

return redirect::action(‘homecontroller@index’);
返回一个重定向至控制器action并带有参数

return redirect::action(‘urcontroller@profile’, array(1));
返回一个重定向至控制器action并带有命名参数

return redirect::action(‘urcontroller@profile’, array(‘ur’ => 1));

视图

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

一个简单视图案例:

复制代码 代码如下:

<!– view stored in app/views/greeting.php –>

<html>
<body>
<h1>hello, <?php echo $name; ?></h1>诗情画意的诗句
</body>
</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
$view = view::make(‘greeting’)->withname(‘steve’);

在上面的案例中,$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::compor(‘profile’, function($view)

{

$view->with(‘count’, ur::count());

});

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

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

复制代码 代码如下:

view::compor(array(‘profile’,’dashboard’), function($view)

{

$view->with(‘count’, ur::count());

});

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

view::compor(‘profile’, ‘profilecompor’);

视图合成器类定义如下:

复制代码 代码如下:

class profilecompor {

public function compo($view)
{
$view->with(‘count’, ur::count());
}

}

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

视图创建器

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

复制代码 代码如下:

view::creator(‘profile’, function($view)

{

$view->with(‘count’, ur::count());

});

特殊respon

创建一个json respon

return respon::json(array(‘name小的英语怎么说217; => ‘steve’, ‘state’ => ‘ca’));
创建一个jsonp respon

return respon::json(array(‘name’ => ‘steve’, ‘state’ => ‘ca’))->tcallback(input::get(‘callback’));
创建一个文件下载respon

return respon::download($pathtofile);

return respon::download($pathtofile, $status, $headers);
注意: symfony httpfoundation 用于处理文件下载,要求下载的文件的文件名只包含 ascii 字符。

respon 宏

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

复制代码 代码如下:

respon::macro(‘caps’, function($value)

{

return respon::make(strtoupper($value));

});

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

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

本文发布于:2023-04-06 09:25:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/54eb8484306063e9405000d9661bee05.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:跟我学Laravel之视图 & Response.doc

本文 PDF 下载地址:跟我学Laravel之视图 & Response.pdf

标签:视图   代码   合成器   重定向
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图