1

タイトルが言ったように、プラグインで設定モデルを使用してコンポーネントから設定にアクセスしていますが、現在DBに保存されている代わりに空白の結果が得られました。これが私がやっていることです。まず、これは私のfields.yamlファイル定義です:

fields:
    sandbox_enabled:
      label: Activar modo Sandbox?
      type: checkbox
      default: false
    ppal_fee:
      label: Cargo de PayPal
      type: text
    ppal_discount:
      label: Descuento por transferencias
      type: text
    ppal_app_id_sandbox:
      label: PayPal Sandbox App ID (*)
      type: text
    ppal_developer_account:
      label: PayPal Developer Account Email Address (*)
      type: text
    ppal_api_username_sandbox:
      label: PayPal Username API Credentials (Sandbox) (*)
      type: text
    ppal_api_password_sandbox:
      label: PayPal Password API Credentials (Sandbox) (*)
      type: text
    ppal_api_signature_sandbox:
      label: PayPal Signature API Credentials (Sandbox) (*)
      type: text
    ppal_rest_client_id_sandbox:
      label: PayPal REST API Username Credentials (Sandbox) (*)
      type: text
    ppal_rest_client_secret_sandbox:
      label: PayPal REST API Secret Credentials (Sandbox) (*)
      type: text

次に、alomicuba.recharge.settingsDB に値を記録します。

{
     "sandbox_enabled":"1",
     "ppal_fee":"0.029",
     "ppal_discount":"0.30",
     "ppal_app_id_sandbox":"",
     "ppal_developer_account":"",
     "ppal_api_username_sandbox":"",
     "ppal_api_password_sandbox":"",
     "ppal_api_signature_sandbox":"",
     "ppal_rest_client_id_sandbox":"",
     "ppal_rest_client_secret_sandbox":""
  }

そして最後に、コンポーネントの設定の値を取得する方法:

public function onAmountChange()
{
    // The user amount
    $amount = post('amount');

    if (empty($amount))
    {
        throw new \Exception(sprintf('Por favor introduzca un valor.'));
    }

    $toReload = $amount - ($amount * Settings::get('ppal_fee') - Settings::get('ppal_discount'));
    $this->page["confirmation_text"] = $toReload;
}

しかし、この 2 つの値が空になるため、機能していません。なぜですかSettings::get('ppal_fee')? Settings::get('ppal_discount')私は何を間違えましたか?

4

1 に答える 1

1

上に次のコード行を指定しましたか?

use Alomicuba\Recharge\Models\Settings;

指定した場合は、次のコード行を使用してみてください。

$settings = Settings::instance();

$settings->ppal_fee;

関数コード全体がこのようになります

public function onAmountChange()
{
    // The user amount
    $amount = post('amount');

    if (empty($amount))
    {
        throw new \Exception(sprintf('Por favor introduzca un valor.'));
    }
    $settings = Settings::instance();

    $toReload = $amount - ($amount * $settings->ppal_fee - $settings->ppal_discount);
    $this->page["confirmation_text"] = $toReload;
}

https://octobercms.com/docs/plugin/settings#reading-settingsを参照してください

于 2014-10-15T06:45:54.740 に答える