Laravel 在 View Composer 中通过 HTTP 从外部资源获取的共享数据
Laravel shared data from external resource fetched by HTTP in view composer
我想共享从外部 API 获取的所有 blade 的全局数据。出于这个原因,我创建了一个 ViewServiceProvider,它按如下方式启动
View::composer('*', CommonsComposer::class);
比起在 composer 中,我更愿意按如下方式获取数据
public function __construct()
{
try {
$response = Http::get(env('WP_API_URL') . 'bdb/v1/options');
$this->wpData = $response->json();
} catch (HttpException $exception) {
dump($exception);
}
}
但这里不是执行此操作的最佳位置,因为当呈现 blade 模板时,调用也会被触发。
如何将 HTTP 调用限制为一个请求?
我们认为您可以使用单例模式注册作曲家 class。像这样:
在ViewServiceProvider
中:
public function register()
{
$this->app->singleton(\path_to_composer\CommonsComposer::class);
}
我想共享从外部 API 获取的所有 blade 的全局数据。出于这个原因,我创建了一个 ViewServiceProvider,它按如下方式启动
View::composer('*', CommonsComposer::class);
比起在 composer 中,我更愿意按如下方式获取数据
public function __construct()
{
try {
$response = Http::get(env('WP_API_URL') . 'bdb/v1/options');
$this->wpData = $response->json();
} catch (HttpException $exception) {
dump($exception);
}
}
但这里不是执行此操作的最佳位置,因为当呈现 blade 模板时,调用也会被触发。
如何将 HTTP 调用限制为一个请求?
我们认为您可以使用单例模式注册作曲家 class。像这样:
在ViewServiceProvider
中:
public function register()
{
$this->app->singleton(\path_to_composer\CommonsComposer::class);
}