gpt4 book ai didi

laravel - 在 Laravel 之外使用 Laravel Facade

转载 作者:行者123 更新时间:2023-12-02 10:18:53 26 4
gpt4 key购买 nike

我有一个 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

最佳答案

我查看了 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 现在正在为我做这件事。

我还没有对此进行全面测试,所以我不知道它有多强大或哪些功能可以工作,但到目前为止一切都很好。

关于laravel - 在 Laravel 之外使用 Laravel Facade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32722677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com