2017-04-27 12 views
1

私はドキュメントを上下に読んできましたが、私が間違っていることはまだ分かりません。私の意見では、初心者のためにドキュメントを理解することは非常に難しいです。ファサードとサービスプロバイダを理解することに若干の問題がある

とにかく、私はAuth::user()メソッドに類似したものを作成しようとしています。このメソッドでは、このアプリケーションに必要なログインユーザーに関する追加データが返されます。

私はここで、このヘルパークラスを持っている:

namespace App\Helpers; 

use Auth; 
use Illuminate\Http\Request; 

use App\Models\Grouping\User; 
use App\Models\Grouping\Client; 
use App\Models\Grouping\Rank; 

class ClientUser { 
    public function __construct($request) { 
     $this->request = $request; 
    } 

    public function client() { 
     return Client::find($this->request->session()->get('client_id')); 
    } 

    public function auth() { 
     if (Auth::check()) { 
      // Get the client 
      $client = $this->client(); 

      // Get the client's user 
      $user = $client->users()->find(Auth::user()['id']); 

      // Get the rank of the logged in user 
      $rank = Rank::find($user->pivot->rank_id); 

      return [ 
       'user' => $user, 
       'rank' => $rank, 
       'client' => $client 
      ]; 
     } 

     return null; 
    } 
} 

これは私がAuth::user()を介して取得することができない追加データを返す、私が説明した何をする責任があります。今、私はAuthServiceProvider

public function register() 
    { 
     // Register client auth 
     $request = $this->app->request; 

     $this->app->singleton(ClientUser::class, function ($app) { 
     return new ClientUser($request); 
     }); 
    } 

でこのクラスを登録しようとしている今、私は理解していないものを私はAuth::user()のように私のアプリを通じて、これは世界的にアクセスできるようになってるかです。

"インポート"するだけで問題になるのは、リクエストオブジェクトが必要なためです。サービスオブジェクトを渡す理由です。

ここで私は立ち往生しています。私はコントローラーまたはどこでもappにアクセスすることができません.Faceadeはバインディングされたサービスの文字列を返すことを期待しているため、ファサードを定義することはできません。

答えて

1
は、このようなあなたのサービスプロバイダを変更し

$this->app->bind('client.user', function ($app) { 
     return new ClientUser($app->request); 
     }); 

Illuminate\Support\Facades\Facadeから延長し、別のクラスを作成します。

namespace App\Facades; 

use Illuminate\Support\Facades\Facade; 

class ClientUserFacade extends Facade { 
    public static function getFacadeAccessor(){ 
     return "client.user"; 
    } 
} 

これはまだ私の混乱を解決しませんapp.php

+0

'ClientUser => ClientUserFacade::classaliasでキーを追加し、どのように私は、私は 'ClientUser ::ユーザーを()'行うことができ、この外のファサードを作るのですか? –

関連する問題