可持续忙碌 / astrel-laravel
将 Astrel 集成到您的 Laravel 应用程序中。
Requires
- php: ^7.4|^8.0
- guzzlehttp/guzzle: ^6.3.1|^7.0.1
- illuminate/contracts: ^7.0|^8.0
Requires (Dev)
- orchestra/testbench: ^6.0
- pestphp/pest: ^1.0
- phpunit/phpunit: ^9.3.10
README
将 Astrel 集成到您的 Laravel 应用程序中。
Astrel 是一个远程配置编排应用程序,允许您在不接触代码的情况下更改应用中的任何内容。
🍿 你是视觉学习者吗? 这里有一个快速的视频教程,帮助您开始使用 Astrel 和 Laravel。
安装
通过 composer 安装此软件包。
composer require sustainable-hustle/astrel-laravel
在您的 .env
文件中添加您的 Astrel API 密钥。
ASTREL_API_KEY="sxjTgBJAxkT2TNyKf9vabFI0L07AyItM5o3iiloS"
最后,监听 Astrel 的 webhooks 以清除缓存。
// routes/web.php use SustainableHustle\Astrel\Facades\Astrel; Astrel::webhookRoute('astrel/webhook'); // Make sure CSRF verification is disabled on that route. class VerifyCsrfToken extends Middleware { protected $except = [ '/astrel/webhook', ]; }
可选地,发布 astrel
配置文件。
php artisan vendor:publish --tag="astrel-config"
基本用法
此软件包提供了一种外观,您可以使用它来检索一个或多个方面。方面是一个配置并直接在 Astrel 控制台中更新的键/值对。
use SustainableHustle\Astrel\Facades\Astrel; Astrel::all(); // Returns all aspects. Astrel::get('slug'); // Returns the value of an aspect by giving its slug. Astrel::get('slug', 'default value'); // Returns the default value if the given aspect has no value.
或者,您也可以使用 astrel
助手方法来访问 Astrel 管理器或直接访问值。
astrel()->all(); // Equivalent to Astrel::all(); astrel('slug'); // Equivalent to Astrel::get('slug'); astrel('slug', 'default value'); // Equivalent to Astrel::get('slug', 'default value');
请注意,如果您想回退到环境变量,您还可以像这样使用 astrel_env
助手函数。
astrel_env('my-slug'); // Equivalent to astrel('my-slug', env('MY_SLUG')); astrel_env('my-slug', 'MY_ENV_SLUG'); // Equivalent to astrel('my-slug', env('MY_ENV_SLUG')); astrel_env('my-slug', 'MY_ENV_SLUG', 'default'); // Equivalent to astrel('my-slug', env('MY_ENV_SLUG', 'default'));
缓存
此软件包会自动缓存所有检索到的方面。这确保您的应用程序不需要在每次需要 Astrel 的值时都进行 API 调用。
您可以使用 Astrel
外观中的 flush
和 refetch
方法来清除缓存以及立即重新检索其内容。
use SustainableHustle\Astrel\Facades\Astrel; Astrel::flush() // Flush the cache for all aspects. Astrel::refetch() // Flush the cache and refetch all aspects immediately.
默认情况下,缓存永不过期,这意味着您必须在必要时手动清除它。这是因为 Astrel 会在任何更改时向您发送 webhook,因此您只需在必要时清除缓存(请参阅下文部分)。
但是,如果您想自定义缓存的生存期,您可以更新 config/astrel.php
文件中的 cache_lifetime
变量。
在接收到 webhook 时清除缓存
如上所述,您可以配置 Astrel 在任何值更新时向您发送 webhook。这意味着您可以使用此 webhook 来清除并立即重新检索所有方面。
此软件包在 Astrel
外观上提供了一个名为 webhookRoute
的助手方法,它正是这样做的。只需将其添加到您的路由文件中,并链式配置您可能需要的任何路由配置。
use SustainableHustle\Astrel\Facades\Astrel; Astrel::webhookRoute(); // Register a route that calls `Astrel::refetch()` when triggered. Astrel::webhookRoute('astrel/webhook'); // Provide a custom path to that route. Astrel::webhookRoute('astrel/webhook') // This method returns a Route object so you can chain anything you want. ->name('webhooks.astrel') ->middleware('web');
此外,如果您正在使用默认的 web
中间件组,请确保在 VerifyCsrfToken
中间件中禁用该路由的 CSRF 验证。
class VerifyCsrfToken extends Middleware { protected $except = [ - // + '/astrel/webhook', ]; }