Yii2 获取 post 请求值无效

Yii2 get post request value not working

为什么 Yii::$app->request->post() 不起作用?

表格:

 <?php $form = ActiveForm::begin(); ?>

   <?= $form->field($model, 'parent')
        ->dropDownList($model->AuthItemDropdown
        );
    ?>
    <?= $form->field($model, 'child[]')
        ->dropDownList($model->AuthItemDropdown,
            ['multiple'=>'multiple']  
        );
    ?>

控制器:

 public function actionCreate(){

    $model = new AuthItemChild();

    if ($model->load(Yii::$app->request->post())){

        $parent =  Yii::$app->request->post('parent');
        echo $parent; // show nothing

        $x = Yii::$app->request->post('child');
        print_r($x);// show nothing
        exit;

但是print_r(Yii::$app->request->post());的输出是:

Array
(
    [_csrf-backend] => OGd0emxoOHgJEh8ICFloPlYvJg8BEHk.VjVAMx0hTD9CKgIDNSdVOg==
    [AuthItemChild] => Array
        (
            [parent] => admin
            [child] => Array
                (
                    [0] => admin
                    [1] => create-branch
                )
        )
)

根据您的 print_r(Yii::$app->request->post()); 输出,您应该调用:

$authItemChild = Yii::$app->request->post('AuthItemChild');
echo $authItemChild['parent']; // should show 'admin'

由于您使用 post 加载模型,我想您应该显示加载的结果,而不是再次尝试获取 post:

if ($model->load(Yii::$app->request->post())){

    $parent =  $model->parent;
    echo $parent;

    $x = $model->child;
    print_r($x);
    exit;
}

我试图以同样的方式获得价值。我透露的是 $app->request->post() (Yii2.0.10) 与文本和 select 字段不同。

  1. 文本字段通过$model->load(Yii::$app->request->post())
  2. 绑定
  3. 对于 selects 更好的方法是将值作为 $model->parent=$request->post("parent") 并显式设置名称: <?= $form->field($model, 'parent') ->dropDownList($model->AuthItemDropdown,['id' => 'parent','name'=>'parent'] ); ?> 默认情况下 ActiveForm 将名称确定为 YouModelName[NameOfField]