【问题标题】:how to send post parameters from yii2 gridview如何从 yii2 gridview 发送帖子参数
【发布时间】:2014-12-25 12:38:46
【问题描述】:

我是 yii2 的新手。我一直在尝试使用 post 方法从视图中向操作发送一些参数,不幸的是我的操作似乎没有看到/接收它们。非常感谢您的帮助。

我的列操作是这样的:

'buttons'=> [
    'password'=> function ($url, $model, $key){
    $url =$url = Url::toRoute(['users/reset-password', 'username' => $model->username]);
    return Html::a('<span class="glyphicon glyphicon-asterisk"></span>',$url,[
                   'title'=>'Clave',
                   'data-confirm' => Yii::t('yii', 'Are you sure you want to change this password?'),
                   'data-method' => 'post',
                   'data' => ['username'=>$model->username, 'test-name'=>'this is just for testing'],
                        ]);
                },
.....

data 参数中的所有内容都应该通过邮寄方式发送,但我只得到 csrf 令牌.. 提前感谢您的帮助。

【问题讨论】:

    标签: php post gridview parameters yii2


    【解决方案1】:

    使用下面的代码

    echo Html::a('Name', ['controller/action'], [
        'class'=>'classname',
        'data'=>[
            'method'=>'post',
            'confirm'=>'Are you sure? OK to continue Retract..',
            'params'=>[
                'param1'=>'value',
                .......,
            ],
        ]
    ]);
    

    【讨论】:

      【解决方案2】:

      “数据参数中的所有内容都应通过邮寄方式发送”您为什么这么认为?我在文档中找不到任何“数据”中的任何内容都将通过邮寄方式发送的内容。
      您可以:

      1. 使用 get 发送参数或
      2. 创建一个表单并将其包裹在链接周围。应该邮寄。

      【讨论】:

      • 更新和删除操作发送帖子 ID 参数。我不想使用 GET。使用表单效率不高,有 1000 个用户就是 1000 个表单……必须有办法……
      • 我认为@MihaiP。的第一个选项是您的最佳答案。为什么通过 URL 查询参数发送所需的参数会出现问题? (即获取参数)。 Yii 在 gridviews 删除按钮中本机执行此操作。只是一个空的 POST 到 [controller]/delete?id=[id]。
      【解决方案3】:

      尝试按会话发送:

      'buttons'=> [<br/>
          'password'=> function ($url, $model, $key){<br/>
           Yii::$app->session->set('username',$model->username);<br/>
           Yii::$app->session->set('test-name','this is just for testing');<br/>
          $url =$url = Url::toRoute(['users/reset-password', 'username' => $model->username]);<br/>
          return Html::a('<span class="glyphicon glyphicon-asterisk"></span>',$url,[<br/>
                         'title'=>'Clave',<br/>
                         'data-confirm' => Yii::t('yii', 'Are you sure you want to change this password?'),<br/>
                         'data-method' => 'post',<br/>
      
                              ]);
                      },
      

      在控制器上调用这个:

      你可以获得会话:

      Yii::$app->session->get('username');
      

      并删除会话

      Yii::$app->session->remove('username');
      

      【讨论】:

      • 谁赞成这个?这不可能工作,因为会话是在生成按钮时运行的代码中设置的,而不是单击。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 1970-01-01
      相关资源
      最近更新 更多