Php Yii 2.0美元请求->;邮政问题
在我的控制器中,我有以下几行Php Yii 2.0美元请求->;邮政问题,php,yii,yii2,Php,Yii,Yii2,在我的控制器中,我有以下几行 $request = Yii::$app->request; print_r($request->post()); echo "version_no is ".$request->post('version_no',-1); 输出如下所示 Array ( [_csrf] => WnB6REZ6cTAQHD0gAkoQaSsXVxB1Kh5CbAYPDS0wOGodSRANKBI
$request = Yii::$app->request;
print_r($request->post());
echo "version_no is ".$request->post('version_no',-1);
输出如下所示
Array
(
[_csrf] => WnB6REZ6cTAQHD0gAkoQaSsXVxB1Kh5CbAYPDS0wOGodSRANKBImVw==
[CreateCourseModel] => Array
(
[course_name] => test
[course_description] => kjhjk
[course_featured_image] =>
[course_type] => 1
[course_price] => 100
[is_version] => 1
[parent_course] => test
[version_no] => 1
[parent_course_id] => 3
[course_tags] => sdsdf
)
)
version_no is -1
因此这里post()的返回值包含版本号。但是当它被称为$request->post(“版本号”)
时,它不返回任何内容(或者$request->post(“版本号”,-1)
返回默认值-1)
根据Yii 2.0文档,语法正确,应返回post参数的值
但是为什么在我的例子中它失败了。post数组中有参数。但是当调用单个参数值时,函数没有返回 您的参数位于
$\u POST['CreateCourseModel']['version\u no']
等中。使用$request->POST('version\u no',-1)
您试图获取$\u POST['version\u no']
,该参数未定义,因此返回-1。所以要得到版本就没有用了
您可以使用点符号访问嵌套的
$\u POST
数组元素:
\Yii::$app->request->post('CreateCourseModel.version_no', -1);
模型属性的分组方式类似于通过$Model->load(Yii::$app->request->post())
完成的大规模分配
根据您的需要,最好使用默认值验证器,如下所示:
['version_no', 'default', 'value' => -1],
好的..但是为什么参数被包含在一个带有模型名的索引中呢?.Yii 2.0文档从来没有这样说过吗?当您使用
ActiveForm
时,如果您没有通过[options][name]参数显式指定它,它会生成这样的输入名称[modelClassName][attribute]
['version_no', 'default', 'value' => -1],