カスタムモジュールがあります。フォームを作成するのはFormBaseです。そして送信時に、APIに値を投稿します。これはすべて機能します。しかし、ベースURL変数(複数のメソッドで使用されます)を変更して、ライブ環境以外の環境で別のURLを取得できるようにしたいと考えています。
Drupalこれを行う8つの方法を理解したいと思います。
class EventSuggestionForm extends FormBase {
// Needs to be different if not the live site...
private $baseUrl = 'https://www.example.com';
private $apiUrl = '/api/v1/';
...
アドバイスはありますか?
次のように、settings.local.php
またはsettings.php
ファイルに新しい設定を作成できます。
$settings['event_base_url'] = 'https://www.example.com';
または一部の人々は、サーバーのホストに基づいてスイッチブロックを追加しています、例えば:
switch (@$_SERVER['HTTP_Host']) {
default:
case 'dev.example.com':
$settings['event_base_url'] = 'http://dev.example.com';
break;
case 'stage.example.com':
$settings['event_base_url'] = 'https://test.example.com';
break;
case 'www.example.com':
case 'preprod.example.com':
$settings['event_base_url'] = 'https://live.example.com';
break;
}
次に、次のようなコードで参照します。
use Drupal\Core\Site\Settings;
$baseUrl = Settings::get('event_base_url', '');
したがって、コードは次のようになります。
use Drupal\Core\Site\Settings;
class EventSuggestionForm extends FormBase {
private $baseUrl;
private $apiUrl = '/api/v1/';
function __construct() {
// Read value from the settings file.
$this->$baseUrl = Settings::get('event_base_url', '');
}
...
次に、設定ファイルで環境ごとにこの設定を変更します。環境ごとにデータベース資格情報が異なる場合と同様です。これは、既存の$settings['file_public_base_url']
パラメータに使用されている概念と同じです。