关于laravel:构造一个仿Laravel-Mvc框架-视图View

2次阅读

共计 2007 个字符,预计需要花费 6 分钟才能阅读完成。

紧接着后面两篇内容, 本章开始叙述视图模块的集成。

  • 结构一个仿 Laravel Mvc 框架 – 路由
  • 结构一个仿 Laravel Mvc 框架 – 模型

在 laravel 框架的视图中, 常常用到 blade 模板, 通过其简洁的语法和数据绑定形式, 绝对于间接嵌入 html 中开发几乎不要难受太多。

上面咱们进行引入, 与其对应的组件是 illuminate/view, 引入命令如下:

composer require "illuminate/view":"*" 

而后须要在入口文件 public/index.php 处, 配置好以下几点:

  1. blade 模板编译门路
  2. 视图寄存门路
  3. 对视图服务及文件服务进行注册

残缺操作代码如下:

<?php

use Illuminate\Container\Container;
use Illuminate\Events\EventServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Routing\RoutingServiceProvider;
use Illuminate\Database\Capsule\Manager;
use Illuminate\Support\Fluent;
use Illuminate\View\ViewServiceProvider;
use Illuminate\Filesystem\FilesystemServiceProvider;

// 首页入口

// 调用主动加载文件
require __DIR__ . '/../vendor/autoload.php';

// 实例化服务容器, 对事件服务提供者及路由服务提供者进行注册
$app = new Container;
with(new EventServiceProvider($app))->register();
with(new RoutingServiceProvider($app))->register();

// 启动 Eloquent ORM 模块进行配置
$dbManager = new Manager();
$dbManager->addConnection(require '../config/database.php');
$dbManager->bootEloquent();

// 配置视图贮存模块
$app->instance('config', new Fluent);
// 设置编译模板门路
$app['config']['view.compiled'] = dirname(dirname(__FILE__)) . '/storage/framework/views';
// 视图门路
$app['config']['view.paths']    = ['../resources/views/'];
with(new ViewServiceProvider($app))->register();
with(new FilesystemServiceProvider($app))->register();

// 加载路由配置
require __DIR__ . './../app/Http/routes/routers.php';
// 实例化申请并散发解决申请
$request  = Request::createFromGlobals();
$response = $app['router']->dispatch($request);
// 返回响应申请
$response->send();

配置实现后, 开始编写 blade 模板, 在下面的配置中, 将视图寄存门路设置在框架下的 resources/views/ 目录下, 咱们尝试建设一个 welcome.blade.php

<h3>laravel blade 模板视图 </h3>
用户 ID:{{$data['id'] }} <br/>
用户昵称:{{$data['name'] }} <br/>
用户账号:{{$data['account'] }} <br/>

而后再去更改首页控制器 (IndexController) 的逻辑, 咱们将数据返回到该视图上。

<?php

namespace App\Http\Controllers;

use App\User;
use Illuminate\Container\Container;

class IndexController
{public function index()
    {$user = User::find(1);

        // 拿到服务容器示例
        $app     = Container::getInstance();
        // 创立视图工厂视图
        $view = $app->make('view');
        // 创立视图示例
        return $view->make('welcome')->with('data', $user);
    }
}

通过以上的几个博客的几个步骤, 一个简略的仿 Laravel 框架就实现了, 集成了 MVC 的基本功能, 从路由 -> 控制器 -> 模型 -> 视图, 应有就有, 省去了咱们重复造轮子的大量工夫。

正文完
 0