1

[ユーザーフロスティング: 0.3.1]

こんにちは、

私は現在、UserFrosting の環境とアーキテクチャを調査しています。

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

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

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

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

ありがとう

4

1 に答える 1

2

のこのルートを/dashboard参照している場合は、正しいです。デフォルトのセットアップでは、外部コントローラー クラスは使用されません。

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

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

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

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

最後に (これは、ユーザーのリストを生成するために私が推奨するものです)、最初に 1 つの要求を使用してダッシュボード ページを生成し、次に別の要求で実際のデータを取得し、クライアント側のコード (Javascript) を使用してリストを作成することができます。 . これは実際に/usersページがデフォルトでどのように機能するかです。

/usersブラウザ コンソールを開いた状態でこのページにアクセスすると、 /api/users. これは、ユーザーのリストを含む JSON オブジェクトを返します。例えば:

{
    "count": 5,
    "rows": [
        {
            "id": 1,
            "user_name": "admin",
            "display_name": "Overlord",
            "email": "mrdj@userfrosting.com",
            "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": "armin@userfrosting.com",
            "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": "pierre@userfrosting.com",
            "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": "deadmau5@userfrosting.com",
            "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": "digweed@userfrosting.com",
            "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で使用できるように変換します。このようにすると、サーバー側でページネーションを実行できるという利点があります。1 回のリクエストでユーザーのリスト全体をロードし、テーブル全体が構築されるまでユーザーを待たせる必要はありません (これは、ユーザーが多い!)

于 2016-07-19T23:30:48.250 に答える