我有一个 Laravel 应用程序,我将其用作 Joomla 中构建的更大应用程序的 API。我真的很喜欢使用 Laravel,并决定在 Joomla 应用程序中使用 Eloquent。我通过导入来实现这个工作bootstrap\autoload.php
在 Laravel 应用程序中创建一个文件并创建一个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
.
例如我使用Config.get('key')
在 Eloquent 模型之一中,在 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();
and $kernel->terminate($request, $response);
这样路由就不会发生并覆盖 Joomla 自己的路由。
我也不再需要实例化Capsule
因为 Laravel 现在正在为我做这件事。
我还没有对此进行全面测试,所以我不知道它有多强大或哪些功能可以工作,但到目前为止一切都很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)