2

我对 Laravel 最满意,并希望使用 Q2A 或 OSQA 等问答框架来扩展它。如何将两者整合在一起(例如 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

创建一个作曲家包怎么样,更好的是,使用 laravel 工作台来创建一个 laravel 特定的作曲家包?

于 2013-10-18T17:13:56.113 回答
0

OSQA 使用完全不同的语言,老实说,这会更加困难。Q2A 像 Laravel 一样使用 PHP,但它是一个独立的应用程序,并且本身就是它自己的框架。

然而,Q2A 确实有一个单点登录的概念,所以如果你在 Laravel 中设置了用户,他们可以与 Q2A 集成。有关更多信息,请参阅 Q2A 文档

于 2014-01-31T16:17:38.007 回答