php - 无法在 api 控制器 Yii2 中获取配置参数值
问题描述
调用时出现未定义参数错误Yii::$app->params['status']
我已经为 Web 服务创建了 api 文件夹,在这个文件夹中我有api/controllers/UsersController.php
. 我Yii::$app->params['status']
在这个控制器的一个动作中调用它,但得到未定义的错误。
这是我的api/config/main.php
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
//require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/params.php')
//require(__DIR__ . '/params-local.php')
);
return [
'id' => 'api',
'basePath' => dirname(__DIR__),
'controllerNamespace' => 'api\controllers',
'bootstrap' => ['log'],
'components' => [
'user' => [
'identityClass' => 'common\models\Users',
'enableAutoLogin' => false,
'idParam' => '_api'
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
],
'response' => [
'class' => 'yii\web\Response',
'on beforeSend' => function ($event) {
$response = $event->sender;
if ($response->data !== null && Yii::$app->request->get('suppress_response_code')) {
$response->data = [
'success' => $response->isSuccessful,
'data' => $response->data,
];
$response->statusCode = 200;
}
},
],
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => 'pbB0NvlmxlWRk7XFCN_7XUC2uvX0vyCD',
],
],
];
if (!YII_ENV_TEST) {
// configuration adjustments for 'dev' environment
// $config['bootstrap'][] = 'debug';
// $config['modules']['debug'] = 'yii\debug\Module';
}
return $params;
这是我的api/web/index.php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../../vendor/autoload.php');
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../../common/config/aliases.php');
require(__DIR__ . '/../../common/config/params.php');
//require(__DIR__ . '/../../common/twiliophp/Services/Twilio.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../../common/config/main.php'),
// require(__DIR__ . '/../../common/config/main-local.php'),
require(__DIR__ . '/../config/main.php')
// require(__DIR__ . '/../config/main-local.php')
);
require(__DIR__ . '/../../common/config/aliases.php');
$application = new yii\web\Application($config);
$application->run();
我还定义了common\config\params.php
如下状态:
return [
// 'bsVersion' => '4.x',
'bsDependencyEnabled' => 'false',
'status' => array('1' => 'Active', '0' => 'In-Active')
];
当我犯错时请告诉别人。
解决方案
你的配置文件有问题。您将返回主配置对象,几行之后您将返回参数。
只需按如下方式更改您的配置文件:
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
//require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/params.php')
//require(__DIR__ . '/params-local.php')
);
$config = [
'id' => 'api',
'basePath' => dirname(__DIR__),
'controllerNamespace' => 'api\controllers',
'bootstrap' => ['log'],
'components' => [
'user' => [
'identityClass' => 'common\models\Users',
'enableAutoLogin' => false,
'idParam' => '_api'
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
],
'response' => [
'class' => 'yii\web\Response',
'on beforeSend' => function ($event) {
$response = $event->sender;
if ($response->data !== null && Yii::$app->request->get('suppress_response_code')) {
$response->data = [
'success' => $response->isSuccessful,
'data' => $response->data,
];
$response->statusCode = 200;
}
},
],
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => 'pbB0NvlmxlWRk7XFCN_7XUC2uvX0vyCD',
],
],
'params' => $params
];
if (!YII_ENV_TEST) {
// configuration adjustments for 'dev' environment
// $config['bootstrap'][] = 'debug';
// $config['modules']['debug'] = 'yii\debug\Module';
}
return $config;
此外,索引文件上的这一行是多余的:
require(__DIR__ . '/../../common/config/params.php');
推荐阅读
- jquery - 如何在jquery中获取多选的选项值和文本
- xslt - 如果测试 NaN
- python - Python中超出内存限制
- php - 如何从 PHP 脚本/模块中限制 CPU 使用率
- swift - Rx 中覆盖的替代品是什么?
- javascript - 从 JS 中的对象列表中收集索引统计信息
- swift - UIImageView 的 Swift 3D 旋转(CGAffineTransform 或 CATransform3D)
- docx4j - Docx4J.toPDF 错误:以前使用的属性 ID“XXX”(在“fo:inline”上找到);ID 值在文档中必须是唯一的
- spring - 导入 MockMultipartFile 不起作用,我是否使用了正确的依赖项?
- c# - 从 MySql 数据库 C# 返回视图列表