如何在 yii2 ActiveForm 中添加一个按钮来添加产品

问题描述 投票:0回答:1

你好,我是 yii2 的新手,我正在做一个记录商店销售的项目,我想添加一个按钮来添加用于多次购买的产品项目。请帮助

这是我的表格代码

['sales/create'], 'id' => 'new-sales', 'method'=>'post',]); ?>
<div class="container-fluid row">
    <div class="col-md-8">
        <?= 
           $form->field($model, 'product_name')
                 ->dropDownList(
                arrayHelper::map(Product::find()->all(),'product_name','product_name'),
            ['prompt' => 'Select product', 'class' => 'form-control text-center', 'id'=>'pname']
        ) ?> 
    </div>
    <div class="col-md-4">
        <?= $form->field($model, 'quantity')->textInput([
            'type' => 'number', 'min' => 1, 'class' => 'form-control', 'id' => 'qnt'
        ]) ?>
    </div>
    <div class="col-md-6">
        <?= $form->field($model, 'amount')->textInput(['class'=> 'form-control']); ?>
    </div>
</div>

有没有办法让我也可以在提交前根据所选产品和数量显示金额?

jquery yii2 ajaxform active-form
1个回答
0
投票

对于基于项目和数量的金额,您可以使用jQuery 来处理更改事件。从表单模型中的默认数量 1 开始,以便在您选择项目时进行数学计算。另外,给金额字段一个

id
,例如
'id' = 'amt'
(.

然后你可以在你的视图中添加这样的东西:

<?php 
$script = <<< JS

$('#pname').on('change', function() {
    setamount();
});

$('#qnt').on('change', function() {
    setamount();
});

function setamount() {
  $.get('/product/get-amount', {pname : $('#pname').val(), qnt:$('#qnt').val()}, function(data) {
    $('#amt').html(data);
  });
}

JS;
$this->registerJs($script);
?>

您的产品控制器操作将类似于:

class ProductController extends Controller
{
...
   public function actionGetAmount($pname, $qnt) {
     $model = // find a product using $pname
     $amt = $model->item_price * $qnt;
     return $this->asJson($amt);
   }
...
}

可能有一种更有效的方法,因为每次任一值更改时都需要往返数据库,并且您应该进行一些错误捕获,但这应该会给您一个想法。

© www.soinside.com 2019 - 2024. All rights reserved.