你好,我是 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 来处理更改事件。从表单模型中的默认数量 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);
}
...
}
可能有一种更有效的方法,因为每次任一值更改时都需要往返数据库,并且您应该进行一些错误捕获,但这应该会给您一个想法。