【问题标题】:Using Laravel Facades outside Laravel在 Laravel 之外使用 Laravel Facades
【发布时间】:2015-12-19 18:34:21
【问题描述】:

我有一个 Laravel 应用程序,我将它用作 Joomla 中构建的更大应用程序的 API。我真的很喜欢使用 Laravel,并决定在 Joomla 应用程序中使用 Eloquent。我通过在 Laravel 应用程序中导入 bootstrap\autoload.php 文件并创建一个 Capsule

来完成这项工作
require JPATH_ROOT.'/../laravel_app/bootstrap/autoload.php';

$capsule = new Capsule();
$config = new JConfig();

$capsule->addConnection([
    'driver'    => 'mysql',
    'host'      => $config->host,
    'database'  => $config->db,
    'username'  => $config->user,
    'password'  => $config->password,
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => $config->dbprefix,
    'strict'    => false
]);

$capsule->setAsGlobal();
$capsule->bootEloquent();

这很好用,我可以使用 Eloquent。它直接从应用程序加载 Eloquent 模型。

我想知道如何让 Laravel 应用程序的其余部分在我的 Joomla 应用程序中运行,包括使用 Facades

例如,我在 Eloquent 模型之一中使用了 Config.get('key'),在 Laravel 中调用时可以正常工作,但在 Joomla 中调用时会抛出错误。

Fatal error: Class 'Config' not found in laravel_app/app/Model.php on line 192

【问题讨论】:

  • 我不知道你如何让它工作,但看看你忘记的错误消息:use Congif; 导入!请先这样做,然后用该信息更新您的问题。
  • 如前所述,它在 Laravel 中工作,所以 use Config; 并没有被遗忘。 Config 是一个 Facade,所以即使我在 Joomla 中导入了目标类,我仍然无法将它用作 Facade
  • 很抱歉我看错了你的错误信息。认为这是关于命名空间的错误。
  • 看看流明:lumen.laravel.com
  • @nXu 我已经构建了一个完整的 Laravel 应用程序,我不想导入单独的框架,我想使用我已经拥有的。

标签: laravel eloquent


【解决方案1】:

我查看了laravel_site/public/index.php 以了解它是如何启动应用程序的,到目前为止,这似乎是一个可行的解决方案:

require JPATH_ROOT.'/../laravel_site/bootstrap/autoload.php';
$app = require_once JPATH_ROOT.'/../laravel_site/bootstrap/app.php';

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

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

//$response->send();

//$kernel->terminate($request, $response);

外墙现在似乎工作正常。我故意省略了$response->send();$kernel->terminate($request, $response);,这样路由就不会发生并覆盖Joomla 自己的路由。

我也不再需要实例化 Capsule,因为 Laravel 现在正在为我做这件事。

我还没有完全测试过这个,所以我不知道它有多强大或者什么功能可以工作,但到目前为止一切都很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2015-01-14
    • 2017-07-02
    • 2015-07-27
    • 2015-05-21
    相关资源
    最近更新 更多