【问题标题】:Yii framework....Calculate total on flyYii 框架....实时计算总数
【发布时间】:2011-04-13 04:37:36
【问题描述】:

我是 Yii 框架的新手,开始学习小型 Web 项目,所以我被困在如何解决这个问题上。

我有一个“Order_form”,其中用户已确认他的订单,如果想要更改“数量”,那么只有这个可以更改,然后通过这样做我需要更改要在同一表单上即时计算的总计值(如果数量)已被用户更改。

beginWidget('CActiveForm', 数组( 'id'=>'订单形式', 'enableAjaxValidation'=>假, )); ?>
<div class="row">
        <?php echo $form->labelEx($model,'price'); ?>
        <?php echo $model->price; ?>
</div>

<div class="row">
        <?php echo $form->labelEx($model,'qty'); ?>
        <?php echo $form->textField($model,'qty'); ?>
        <?php echo $form->error($model,'qty'); ?>
</div>

<div class="row">
        <?php echo $form->labelEx($model,'total'); ?>
        <?php echo $form->textField($model,'total'); ?>
</div>

endWidget(); ?>

$(文档).ready(函数() { var myVar = '999'; $("#model_total").val(myVar); }); '

在这里我更新了我的脚本以阐明我需要什么,所以在这里我试图在同一个表单上将值“999”传递给“Total”,但这不起作用。可能是我错过/做错了什么。

如果可能的话,我还想要其他方法来计算数量 x 价格并从控制器获取结果。如果可以的话,请指导代码。

【问题讨论】:

  • “即时”是指您希望通过 JavaScript 更新总数而不重新加载页面?此外,你从来没有澄清你的最后一个 Yii 问题,这也是模棱两可的。如果您提出更好、更具体的问题,您可能会得到更多、更好的答案。
  • 是否有任何方法可以在控制器/模型中进行计算,如果没有,那么将使用 javascript........对于 javascrip,我正在尝试使用此方法,但不起作用.. .......

标签: yii on-the-fly


【解决方案1】:

您的 JS 可能无法正常工作的一个原因是:您确定“total”字段 ID 是“model_total”吗?通常它类似于“Order_total”。查看您的 html 源代码以进行验证(Firebug 有帮助)。

无论如何,还有一些其他的建议:

解决此订单总额问题的常用方法是使用“更新购物车”按钮,该按钮将表单发送回计算订单总额的控制器,然后使用新的总额再次呈现页面。

另一种方法是设置一个 onBlur live()(或委托)侦听器,该侦听器执行以下两项操作之一(类似于您现在正在尝试的操作):

(1) 将表单发布到重新计算总数的控制器。像这样的东西(未经测试):

$("#order-form #Order_qty").live('blur',function() {
  $.ajax({
    'type':'POST',
    'data':$('#order-form').serialize(),
    'success':function(data){$('#Order_total').val(data)}
  });}
);

你需要在你的控制器动作中有这样的东西:

if(isset($_POST['ajax']) && $_POST['ajax']==='order-form' && isset($_POST['Order'])) {
  // calculate new total based on the $_POST Model_qty field
  echo $new_total;
  Yii::app()->end();
}

(2) 您可以完全在 JS 中进行计算,并像现在尝试做的那样更新它。请记住,您不能以这种方式更新数据库中的订单数量,因为您没有点击控制器。

$("#order-form #Order_qty").live('blur',function() {
  $('#Order_total').val($('#Order_price').val() * $('#Order_qty').val());
});

【讨论】:

  • 嗨 thaddeusmt,感谢您的回复,特别是解决方案,但我也在 Yii 论坛上找到了 Ajax 的解决方案。我真的非常感谢您为上述代码付出的时间。祝你有美好的一天。
猜你喜欢
  • 1970-01-01
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
相关资源
最近更新 更多