Laravel_blade 调用其他路由_获取数据;
新建服务
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变量
App\Providers\AppServiceProvider.php
public function register()
{
$api = new App\Services\ApiService();
view('api',$api);
}
在blade模板使用
创建test路由 和 banner路由 (这个不用说怎么做吧)
{{ $api->get('test') }}
@foreach($api->get('banner') as $banner)
@endforeach
原因
api已经写好,要用blade来做web;
总不能我写控制器传参到view吧(以后改的话要改两个地方);
ajax虽然可以获取数据,但是麻烦;
所以想到这种方法来获取控制器的数据;
我的web.php
<?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;
}
本作品采用《CC 协议》,转载必须注明作者和本文链接