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