≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

跟我学Laravel之视图 & Response的实现方法

人气:250 时间:2021-04-13

这篇文章主要为大家详细介绍了跟我学Laravel之视图 & Response的实现方法,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小玲来看看吧!

 

基本Response

 

从路由中返回字符串

 

代码如下:



Route::get('/', function()

{

    return 'Hello World';

});

 

 

创建自定义Response

 

Response类继承自Symfony\Component\HttpFoundation\Response类,提供了多种方法用于构建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');
注意: 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('HomeController@index');
返回一个重定向至控制器Action并带有参数

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

return Redirect::action('UserController@profile', array('user' => 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::composer('profile', function($view)

{

    $view->with('count', User::count());

});

 

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

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

 

代码如下:



View::composer(array('profile','dashboard'), function($view)

{

    $view->with('count', User::count());

});

 

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

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

视图合成器类定义如下:

 

代码如下:



class ProfileComposer {

 

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

}

 

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

 

视图创建器

 

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

 

代码如下:



View::creator('profile', function($view)

{

    $view->with('count', User::count());

});

 

 

特殊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 方法:

 

代码如下:



Response::macro('caps', function($value)

{

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

});

 

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

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

本文来自:http://www.q1010.com/173/17789-0.html

注:关于跟我学Laravel之视图 & Response的实现方法的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:

您可能感兴趣的文章

上一篇:php开启与关闭错误提示适用于没有修改php.ini的权限的简单示例
下一篇:PHP 抽象方法与抽象类abstract关键字的简单示例
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。