我在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作为字符传递而不是数字
$模型 - >价格= $丝氨酸>价格;
答案 0 :(得分:1)
以下是您可以这样做的方法:
使用#
作为链接,而不是使用链接,因为您还不想重定向用户。
用户点击按钮后,您想“召唤”一个提示。这可以通过JavaScript / jQuery来实现。
在JavaScript / jQuery代码中,您也可以插入PHP代码,并形成一个URL。
例如(在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
,因为我们想知道用户点击的按钮是否正确,而不是任何。