紧接着后面两篇内容,本章开始叙述视图模块的集成。
- 结构一个仿Laravel Mvc框架 – 路由
- 结构一个仿Laravel Mvc框架 – 模型
在laravel框架的视图中,常常用到blade模板,通过其简洁的语法和数据绑定形式,绝对于间接嵌入html中开发几乎不要难受太多。
上面咱们进行引入,与其对应的组件是 illuminate/view,引入命令如下:
composer require "illuminate/view":"*"
而后须要在入口文件 public/index.php 处,配置好以下几点:
- blade模板编译门路
- 视图寄存门路
- 对视图服务及文件服务进行注册
残缺操作代码如下:
<?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的基本功能,从路由->控制器->模型->视图,应有就有,省去了咱们重复造轮子的大量工夫。
发表回复