新建服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
App\Services;
class ApiService
{


//要访问的路由url
public function get($url)
{
$request = Request::create($url, 'GET'); //创建request
$res = app('router')->dispatchToRoute($request); //执行laravel路由
$res = json_decode($res);
if($res->setStatusCode != 200)
echo "注意:状态码不等于200";

return $res->getContent(); //此时是Response 详细方法Symfony\Component\HttpFoundation\Response
}


}

注册全局view变量

1
2
3
4
5
6
App\Providers\AppServiceProvider.php
public function register()
{
$api = new App\Services\ApiService();
view('api',$api);
}

在blade模板使用

创建test路由 和 banner路由 (这个不用说怎么做吧)
1
2
3
4
5
{{ $api->get('test') }}

@foreach($api->get('banner') as $banner)

@endforeach

原因

api已经写好,要用blade来做web;

总不能我写控制器传参到view吧(以后改的话要改两个地方);

ajax虽然可以获取数据,但是麻烦;
所以想到这种方法来获取控制器的数据;

我的web.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

//路由注册 不做任何数据处理 只返回blade
v('/');
v('/user');
v('/service');
v('/type');
function v($path)
{
Route::get($path,function () use ($path){
return view(viewPath($path));
});
}


function viewPath($path)
{
if($path == '/')
return 'index';
return $path;
}