如何将参数值添加到 AppAssets Yii2
How to add param value to AppAssets Yii2
我在 $config 参数中定义了 recaptcha 密钥:
$config['params'] = [
'recaptcha_private' => 'SECRET',
'recaptcha_public' => 'NOT_SECRET'
];
如何将此参数添加到 AppAssets?
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $cssOptions = ['rel'=>"stylesheet preload",'as'=>'style'];
public $css = [
/*SOME CSS*/
];
public $js = [
'https://www.google.com/recaptcha/api.js?render=HERE I NEED NOT_SECRET KEY'
];
public $depends = [];
}
您可以像这样覆盖资产包中的 init()
方法
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $cssOptions = ['rel'=>"stylesheet preload",'as'=>'style'];
public $css = [
/*SOME CSS*/
];
public $js = [
'https://www.google.com/recaptcha/api.js?render=',
];
public $depends = [];
public function init()
{
parent::init();
$this->js[0] .= Yii::$app->params['recaptcha_public'];
}
}
覆盖AssetBundle
的init方法时不要忘记调用parent::init()
。但是这种方法可能会在以后引起问题,因为您在配置中自定义资产包时必须小心附加密钥。
更安全的变体可能是使用自定义设置 js url 以及 web.php 配置中的密钥。
return [
// ...
'components' => [
'assetManager' => [
'bundles' => [
'app\assets\AppAset' => [ //modify to match your namespace
'js' => [
'https://www.google.com/recaptcha/api.js?render=RECAPTCHA_PUBLIC_KEY',
],
],
],
],
],
];
我在 $config 参数中定义了 recaptcha 密钥:
$config['params'] = [
'recaptcha_private' => 'SECRET',
'recaptcha_public' => 'NOT_SECRET'
];
如何将此参数添加到 AppAssets?
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $cssOptions = ['rel'=>"stylesheet preload",'as'=>'style'];
public $css = [
/*SOME CSS*/
];
public $js = [
'https://www.google.com/recaptcha/api.js?render=HERE I NEED NOT_SECRET KEY'
];
public $depends = [];
}
您可以像这样覆盖资产包中的 init()
方法
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $cssOptions = ['rel'=>"stylesheet preload",'as'=>'style'];
public $css = [
/*SOME CSS*/
];
public $js = [
'https://www.google.com/recaptcha/api.js?render=',
];
public $depends = [];
public function init()
{
parent::init();
$this->js[0] .= Yii::$app->params['recaptcha_public'];
}
}
覆盖AssetBundle
的init方法时不要忘记调用parent::init()
。但是这种方法可能会在以后引起问题,因为您在配置中自定义资产包时必须小心附加密钥。
更安全的变体可能是使用自定义设置 js url 以及 web.php 配置中的密钥。
return [
// ...
'components' => [
'assetManager' => [
'bundles' => [
'app\assets\AppAset' => [ //modify to match your namespace
'js' => [
'https://www.google.com/recaptcha/api.js?render=RECAPTCHA_PUBLIC_KEY',
],
],
],
],
],
];