Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii 2.0美元请求->;邮政问题_Php_Yii_Yii2 - Fatal编程技术网

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],