構造一個仿Laravel Mvc框架 - 視圖(View)

緊接着前面兩篇內容,本章開始敘述視圖模塊的集成。php

在laravel框架的視圖中,常常用到blade模板,經過其簡潔的語法和數據綁定方式,相對於直接嵌入html中開發簡直不要舒服太多。html

下面咱們進行引入,與其對應的組件是 illuminate/view,引入命令以下:laravel

composer require "illuminate/view":"*"

而後須要在入口文件 public/index.php 處,配置好如下幾點:segmentfault

  1. blade模板編譯路徑
  2. 視圖存放路徑
  3. 對視圖服務及文件服務進行註冊

完整操做代碼以下:app

<?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.phpcomposer

<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的基本功能,從路由->控制器->模型->視圖,應有就有,省去了咱們反覆造輪子的大量時間。ide

相關文章
相關標籤/搜索