Yii 2:单击GridView时添加提示文本字段

时间:2017-01-09 06:53:09

标签: javascript gridview yii2 yii2-advanced-app

我在GridView中创建了onClick动作,它将我重定向到控制器中的动作。

Index.php中的代码:

},
  'rowOptions' => function ($model, $key, $index, $grid) {
      return ['id' => $model['id'], 'onclick' => 'var myid=this.id; var enteredValue = prompt("Please enter a number");  
        window.location.href = "index.php?r=patientservices%2Fpassing" + "&id=myid, " + enteredValue; '];
},

在我的控制器代码中:

public function actionPassing($id,$price)
{

    $ser= $this->findModel($id); 
    $model = new Receipts();
    $countclinic=Receipts::find()
                ->where(['patient_services_id'=>$id])
                ->count(); 

        if ($countclinic== 0) { 

         $model->patient_id=$ser->patient_id;
         $model->price=$price;  // the price that i need to pass
         $model->doctor_id=$ser->doctor_id;
         $model->patient_services_id=$ser->id;

         $model->reg_date=DATE('y-m-d h:m:s');
         $model->description='دفعة تحت الحساب';
         $model->userin =  \Yii::$app->user->identity->id ;
         $model->save();

            $models = $this->findModel($id);
            $models->state=2;
            $models->save();

JS代码:

$this->registerJs("
$('.custom_button').on('click', function() {

    alert(id);
    var enteredValue = prompt('Please enter a number');
    if (enteredValue != null) {
        window.location.href = 'index.php?r=patientservices%2Fpassing' + '&id=, ' + enteredValue;
    }
});
");

我需要的是:
当用户在GridView中单击Row时,会为用户显示一个提示文本,并且提示文本中插入的数字会随ID一起传递给控制器​​以在那里使用它,但js代码将id作为字符传递而不是数字

  

$模型 - >价格= $丝氨酸>价格;

1 个答案:

答案 0 :(得分:1)

以下是您可以这样做的方法:

  1. 使用#作为链接,而不是使用链接,因为您还不想重定向用户。

  2. 用户点击按钮后,您想“召唤”一个提示。这可以通过JavaScript / jQuery来实现。

  3. 在JavaScript / jQuery代码中,您也可以插入PHP代码,并形成一个URL。

  4. 例如(在GridView中):

    'buttons' => [
        'passing' => function () {
            return Html::a('Content', '#', [
                'class' => 'btn btn-primary custom_button',
                'title' => 'تسجيل القيمة كـ إيصال',
            ]);
        },
    ],
    

    然后在文件末尾:

    $this->registerJs("
        $('.custom_button').on('click', function() {
            var enteredValue = prompt('Please enter a number');
            if (enteredValue != null) {
                window.location.href = '".$url."' + '&id= ' + enteredValue;
            }
        });
    ");
    

    值得注意的是,我已经包含了一个班级custom_button,因为我们想知道用户点击的按钮是否正确,而不是任何。