2016-07-19 2 views
1

を持っているさまざまなダッシュボードウィジェットの作成[UserFrostingを:0.3.1]UserFrosting:データへのアクセス

こんにちは、

私は現在UserFrosting環境やアーキテクチャを模索しています。

私は、さまざまなデータへのアクセスが必要なメインダッシュボード(dashboard.twig)に「ウィジェット」を作成しようとしています。

ログオンしたユーザーの簡単なリストを表示するウィジェット。

Slimの設定(index.php)でコントローラが使用されていないため、デフォルトのメインダッシュボードはデータにアクセスできないようです(現在のユーザー以外)。これは正しいです?

複数のコントローラ(ユーザー、グループなど)の関数/データを使用する場合は、このデータをメインダッシュボードに渡すにはどうすればよいですか?

おかげ

答えて

2

あなたはthis route for /dashboardに言及している場合は、正しいです - デフォルトの設定では、外部コントローラクラスを使用していません:

$app->get('/dashboard/?', function() use ($app) {  
    // Access-controlled page 
    if (!$app->user->checkAccess('uri_dashboard')){ 
     $app->notFound(); 
    } 

    $app->render('dashboard.twig', []);   
}); 

あなたはいくつかの選択肢を持っています。 existing controller classに新しいメソッドを追加したり、新しいコントローラクラスを作成したりすることもできます(新しいクラスを追加した後は、オートローダーに追加するにはcomposer updateを実行する必要があります)。

また、コントローラのロジックを上記のルートクロージャに直接追加することもできます。 EloquentモデルUserGroupなどは、コントローラクラスと同様にルートクロージャと同じように簡単にアクセスできます。

最後に(これはユーザのリストを生成するためにお勧めします)、最初に1つのリクエストを使用してダッシュボードページを生成し、別のリクエストで実際のデータをフェッチし、クライアントサイドコード(Javascript)。これは実際には/usersページがデフォルトでどのように機能するかです。

ブラウザコンソールを開いたまま/usersページにアクセスした場合、別のリクエストが/api/usersになることがわかります。これは、ユーザーのリストを含むJSONオブジェクトを返します。たとえば:

{ 
    "count": 5, 
    "rows": [ 
     { 
      "id": 1, 
      "user_name": "admin", 
      "display_name": "Overlord", 
      "email": "[email protected]", 
      "title": "The New Kid", 
      "locale": "en_US", 
      "primary_group_id": 2, 
      "flag_verified": 1, 
      "flag_enabled": 1, 
      "flag_password_reset": 0, 
      "created_at": "2015-10-21 00:00:00", 
      "updated_at": "2016-06-22 17:14:57", 
      "last_sign_in_time": "2016-07-19 19:23:49", 
      "sign_up_time": "2015-10-01 00:00:00" 
     }, 
     { 
      "id": 22, 
      "user_name": "armin", 
      "display_name": "Armin van Buuren", 
      "email": "[email protected]", 
      "title": "Cannon Fodder", 
      "locale": "nl_NL", 
      "primary_group_id": 0, 
      "flag_verified": 1, 
      "flag_enabled": 0, 
      "flag_password_reset": 1, 
      "created_at": "-0001-11-30 00:00:00", 
      "updated_at": "2015-12-07 12:37:14", 
      "last_sign_in_time": 0, 
      "sign_up_time": 0 
     }, 
     { 
      "id": 20, 
      "user_name": "david", 
      "display_name": "David Guetta", 
      "email": "[email protected]", 
      "title": "Pyromancer", 
      "locale": "en_US", 
      "primary_group_id": 4, 
      "flag_verified": 1, 
      "flag_enabled": 1, 
      "flag_password_reset": 0, 
      "created_at": "-0001-11-30 00:00:00", 
      "updated_at": "-0001-11-30 00:00:00", 
      "last_sign_in_time": 0, 
      "sign_up_time": 0 
     }, 
     { 
      "id": 13, 
      "user_name": "deadmau5", 
      "display_name": "Deadmau5", 
      "email": "[email protected]", 
      "title": "DJ Extraordinaire", 
      "locale": "en_US", 
      "primary_group_id": 3, 
      "flag_verified": 1, 
      "flag_enabled": 1, 
      "flag_password_reset": 0, 
      "created_at": "-0001-11-30 00:00:00", 
      "updated_at": "2016-03-29 14:37:24", 
      "last_sign_in_time": 0, 
      "sign_up_time": 0 
     }, 
     { 
      "id": 23, 
      "user_name": "digweed", 
      "display_name": "John Digweed", 
      "email": "[email protected]", 
      "title": "DJ of the Future", 
      "locale": "en_US", 
      "primary_group_id": 3, 
      "flag_verified": 1, 
      "flag_enabled": 1, 
      "flag_password_reset": 0, 
      "created_at": "-0001-11-30 00:00:00", 
      "updated_at": "-0001-11-30 00:00:00", 
      "last_sign_in_time": 0, 
      "sign_up_time": 0 
     } 
} 

私たちは、その後、tablesorterで使用するために、このデータを変換するためにいくつかのカスタムコードherehereを使用しています。このようにすると、1つのリクエストでユーザリ​​スト全体をロードし、テーブル全体が構築されている間にユーザを待たせるのではなく、サーバ側でページネーションを実行できるという利点があります。たくさんのユーザーがいる!)

関連する問題