2

私は Laravel に最も慣れており、Q2A や OSQA などの Q&A フレームワークで Laravel を拡張したいと考えています。2つを統合するにはどうすればよいですか(例: Q2A + Laravel)?

4

3 に答える 3

3

サブフォルダーとしてLaravelインストールでQ2Aを実行することができました。これが私がしたことです:

Question2Answer を laravel public/qa フォルダーにインストールします

セットアップ手順フォームhttp://www.question2answer.org/single-sign-on.phpに従ってください

次の関数を public/qa/qa-external/qa-external-users.php に追加します

function laravelauth() {
      //modified from https://laracasts.com/discuss/channels/general-discussion/how-to-use-laravel-authuser-outside-laravel-and-pass-data-in-custom-php

      require getcwd() . '/../../bootstrap/autoload.php';
      $app = require_once getcwd() . '/../../bootstrap/app.php';

      $kernel = $app->make('Illuminate\Contracts\Http\Kernel');

      $response = $kernel->handle(
        $request = Illuminate\Http\Request::capture()
      );

      $id = $app['encrypter']->decrypt($_COOKIE[$app['config']['session.cookie']]);
      $app['session']->driver()->setId($id);
      $app['session']->driver()->start();

      if(!$app['auth']->check()) return ["is_loggedin"=>false];

      $salida = $app['auth']->user()->toArray();
      $salida["is_loggedin"] = true;

      return($salida);

    }

次に、qa_get_logged_in_user() を次のように変更します。

           $r = laravelauth();
            if($r["is_loggedin"]){

                            return array(
                                    'userid' => $r["id"],
                                    'publicusername' => $r["name"],
                                    'email' => $r['email'],
                                    'level' => QA_USER_LEVEL_BASIC //(select the level)
                            );
            }

laravel ユーザー属性などに基づいて、ユーザー レベルを選択できます。

于 2015-05-06T01:16:32.720 に答える
0

OSQA はまったく異なる言語を使用しているため、正直に言うと、それはより困難です。Q2A は Laravel のように PHP を使用しますが、これはスタンドアロン アプリであり、それ自体が独自のフレームワークです。

ただし、Q2A にはシングル サインオンの概念があるため、Laravel でユーザーを設定している場合、ユーザーは Q2A と統合できます。詳細については、Q2A ドキュメントを参照してください。

于 2014-01-31T16:17:38.007 に答える