Yii 2.0 $ request-> post()问题

Jin*_*iel 3 php yii yii2

在我的控制器中,我有以下几行

    $request = Yii::$app->request;
    print_r($request->post());       
    echo "version_no is ".$request->post('version_no',-1);
Run Code Online (Sandbox Code Playgroud)

输出如下

 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
Run Code Online (Sandbox Code Playgroud)

所以这里post()的返回值包含version_no.But,当它被调用时$request->post("version_no"),它不返回任何东西(或$request->post("version_no",-1)返回默认值-1).

根据Yii 2.0文档,语法是正确的,应该返回post参数的值.

但是为什么它在我的情况下失败.post数组中有参数.但是当调用单个参数值时函数不返回.

Ton*_*ony 5

你的参数是在$_POST['CreateCourseModel']['version_no']等等$request->post('version_no',-1)你尝试得到$_POST['version_no']哪些没有定义所以它返回-1.所以要使用version_no

$data = $request->post('CreateCourseModel'); 
print_r($data['version_no']);
Run Code Online (Sandbox Code Playgroud)

  • 当你使用`ActiveForm`时,如果没有通过_ [options] [name] _ param显式指定输入名称,它会生成像_ [modelClassName] [attribute] _这样的输入名称 (2认同)