إطار yii ... احسب المجموع عند الطيران
-
03-10-2019 - |
سؤال
أنا مبتدئ في Framework YII وأبدأ التعلم في مشروع الويب الصغير ، لذلك علقت في هذا الموقف على كيفية حله.
لدي "order_form" حيث يؤكد المستخدم طلبه ، وإذا كان يرغب في تغيير "الكمية" ، لذلك يمكن أن يتغير هذا فقط ، فأنا بحاجة إلى تغيير القيمة الإجمالية التي يجب حسابها عند الطيران على نفس النموذج إذا تم تغيير Qty بواسطة المستعمل.
beginwidget ('cactorform' ، array ('id' => 'order-form' ، 'enableajaxValidation' => false ،)) ؛ ؟><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 () ؛ ؟>
$ (document) .Ready (function () {var myvar = '999' ؛ $ ("#model_total"). val (myvar) ؛}) ؛ ''
قمت هنا بتحديث البرنامج النصي الخاص بي لتوضيح ما أحتاجه ، لذا أحاول هنا تمرير قيمة "999" إلى "المجموع" في نفس النموذج ولكن هذا لا يعمل. قد يكون أنني مفقود/أفعل شيئًا خاطئًا.
أود أيضًا أن أحساس أسعار Qty X والحصول على النتيجة من وحدة التحكم إذا كان ذلك ممكنًا إذا كان الأمر كذلك ، يرجى توجيهًا من خلال الكود.
المحلول
أحد الأسباب التي تجعلك لا تعمل JS هو: هل أنت متأكد من أن معرف الحقل "الكلي" هو "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 ، وتحديثه كما تحاول القيام به الآن. فقط تذكر أنه لا يمكنك تحديث الطلب Qty في قاعدة البيانات بهذه الطريقة ، فأنت لا تضغط على وحدة التحكم.
$("#order-form #Order_qty").live('blur',function() {
$('#Order_total').val($('#Order_price').val() * $('#Order_qty').val());
});