I\'m using Yii2
advanced template,
I want to access params.php
in main-local.php
file,
I called this ways:
main-local.
The params is a part of config and you can not call this in your config .
the best way for handel this you can use this in your class :
myClass:
class myClass extends ... {
public $apikey;
public function __construct(){
$this->apikey = \Yii::$app->params['mandrill_api_key'];
}
}
The config files are read before the application is instantiated as explained in the request lifecycle:
- A user makes a request to the entry script web/index.php.
- The entry script loads the application configuration and creates an application instance to handle the request.
- The application resolves the requested route with the help of the request application component.
- ...
As such \Yii::$app
does not yet exist hence the error. I would suggest moving your api_key definition to the main-local.php
config such that there is no confusion over where it is being set:
'mailer' => [
'class' => 'myClass',
'apikey' => 'actual api key',
'viewPath' => '@common/mail',
],
Alternatively, you can use Yii2's dependancy injection container to set the apikey
in your application's entry script:
...
$app = new yii\web\Application($config);
\Yii::$container->set('\fully\qualified\myClass', [
'apikey' => \Yii::$app->params['mandrill_api_key'],
]);
$app->run();
You can just do
$params['mandrill_api_key']
you dont need to use
\Yii::$app->params['mandrill_api_key']