Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@ippey_s

CraftCMSのプラグイン設定画面で.envの値をサジェストする

CraftCMSで独自プラグインやモジュールを開発する際に、外部サービスのAPIキーやメールアドレスなどを設定することがあります。この設定に.envの値を利用することができますが、設定じに、サジェストしてユーザが選択しやすいようにすることができます。

サジェスト機能付きテキストフィールド設定

templates/settings.twig
{% import "_includes/forms" as forms %}

{{ forms.autosuggestField({
    label: "Secret Key"|t('plugin-handle'),
    id: 'secret-key',
    name: 'secretKey',
    value: settings.secretKey,
    suggestAliases: true,
    suggestEnvVars: true
}) }}

forms.autosuggestField を使うことで、サジェスト機能付きのテキストフィールドを出力できます。これに suggestEnvVars: true をオプションに追加すると、テキストフィールドで先頭に$を入力すると.envの値を参照してサジェストしてくれます。設定値がファイルパスやURLなどの場合はsuggestAliases: true もオプションに追加します。

Screen Shot 2020-05-18 at 10.27.41.png

***PASSWORDや***_KEY、***_SECRETなどは自動でマスクしてくれる模様。サジェストされた環境変数を選択して保存すると、`$SOME_KEY` 、つまり環境変数名 が保存されます。

環境変数名から値を取得する

上記の通り、保存された設定内容は 環境変数名 になります。このままだと、.envの値を利用できません。環境変数名から.envの値を取得するには、getenv()を使うのではなく、以下のように記述します。

Craft::parseEnv(MyPlugin::getInstance()->settings->secretKey);

Craft::parseEnv()を利用すると、$からスタートする値は.envの値、それ以外はその値そのものを返します。 

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ippey_s
大阪・枚方のフリーランスWebデベロッパー。主にSymfonyやLaravelなどのPHPフレームワークを使った開発やCraftCMSやWordPressなどのCMSを使ったサイト制作をしています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?