Laravel_blade 呼叫其他路由_獲取資料;

lyxxxh發表於2019-07-26

新建服務

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 協議》,轉載必須註明作者和本文連結
專心學習不瞎搞

相關文章