Yii2
高度なテンプレートを使用していますが、params.php
ファイルのmain-local.php
にアクセスしたいので、次のように呼び出しました。
main-local.php:
'mailer' => [
'class' => 'myClass',
'apikey' => \Yii::$app->params['mandrill_api_key'],
'viewPath' => '@common/mail',
],
そして私はこのmandrill_api_key
をparams.php
に保存しました
params.php:
<?php
return [
'adminEmail' => '[email protected]',
'supportEmail' => '[email protected]',
'user.passwordResetTokenExpire' => 3600,
'mandrill_api_key' => 'mykey'
];
このエラーが発生します:
注意:25行目のC:\ xampp\htdocs\myproject\common\config\main-local.phpで非オブジェクトのプロパティを取得しようとしています
これらのパラメータにアクセスするにはどうすればよいですか?
request lifecycle で説明されているように、アプリケーションがインスタンス化される前に構成ファイルが読み取られます。
- ユーザーがエントリースクリプトweb/index.phpにリクエストを送信します。
- エントリスクリプトは、アプリケーション構成をロードし、要求を処理するためのアプリケーションインスタンスを作成します。
- アプリケーションは、要求アプリケーションコンポーネントを使用して、要求されたルートを解決します。
- .。
そのため、\Yii::$app
はまだ存在しないため、エラーが発生します。 api_key定義をmain-local.php
構成に移動して、設定場所が混乱しないようにすることをお勧めします。
'mailer' => [
'class' => 'myClass',
'apikey' => 'actual api key',
'viewPath' => '@common/mail',
],
または、Yii2の 依存性注入コンテナ を使用して、アプリケーションのエントリスクリプトにapikey
を設定することもできます。
...
$app = new yii\web\Application($config);
\Yii::$container->set('\fully\qualified\myClass', [
'apikey' => \Yii::$app->params['mandrill_api_key'],
]);
$app->run();
あなたはただすることができます
$params['mandrill_api_key']
使用する必要はありません
\Yii::$app->params['mandrill_api_key']
Paramsはconfigの一部であり、configでこれを呼び出すことはできません。
これを処理するための最良の方法は、クラスでこれを使用できます。
私のクラス:
class myClass extends ... {
public $apikey;
public function __construct(){
$this->apikey = \Yii::$app->params['mandrill_api_key'];
}
}