Радио бутон в страницата за плащане на opencart

Нов съм в php и opencart. но планирах да настроя своя онлайн магазин. Създавах опция за избор на слот за време за доставка в страницата за плащане в opencart. Както е показано на снимката по-долу:

въведете описание на изображението тук

И така, започнах да пиша vqmod, за да постигна това, но останах в това как да съхраня стойността в базата данни: Моят xml изглежда така:

<modification>
<id>Salutation Field Modification</id>
<version>1</version>
<vqmver>1.0.8</vqmver>
<author>maca</author>
<file name="catalog/view/theme/bigshop/template/checkout/shipping_method.tpl">
    <operation>
        <search position="before"><![CDATA[
            <p><?php echo $text_shipping_method; ?></p>
        ]]></search>
        <add><![CDATA[
            <p><?php echo $text_shipping_timeslot; ?></p>
            <table class="radio">

      <tr>
        <td colspan="3"><b><?php echo "Delivery time slot"; ?></b></td>
      </tr>
      <tr class="highlight">
        <td>
          <input type="radio" name="shipping_timeslot" value="><?php echo $ship_slot_one; ?></" id="morning?>" checked="checked"/><?php echo $ship_slot_one; ?></br>
          <input type="radio" name="shipping_timeslot" value="><?php echo $ship_slot_two; ?></" id="afternoon?>"/><?php echo $ship_slot_two; ?></br>
          <input type="radio" name="shipping_timeslot" value="><?php echo $ship_slot_three; ?></" id="evening?>"/><?php echo $ship_slot_three; ?></br>
          <input type="radio" name="shipping_timeslot" value="><?php echo $ship_slot_four; ?></" id="night?>"/><?php echo $ship_slot_four; ?></br>
        </td>
      </tr>
      <tr>
        <td colspan="3"></td>
      </tr>
      </table>
        ]]></add>
    </operation>
</file>
<file name="catalog/language/english/checkout/checkout.php">
    <operation>
        <search position="before"><![CDATA[
            $_['text_shipping_method']           = 'Please select the preferred shipping method to use on this order.';
        ]]></search>
        <add><![CDATA[
            $_['text_shipping_timeslot']           = 'Please select the preferred shipping time slot.';
            $_['ship_slot_one']           = 'Morning';
            $_['ship_slot_two']           = 'Afternoon';
            $_['ship_slot_three']           = 'Evening';
            $_['ship_slot_four']           = 'Night';
        ]]></add>
    </operation>
</file>

   <file name="catalog/controller/checkout/shipping_method.php">
       <operation>
           <search position="before"><![CDATA[
               $this->data['text_shipping_method'] = $this->language->get('text_shipping_method');
           ]]></search>
           <add><![CDATA[
               $this->data['text_shipping_timeslot'] = $this->language->get('text_shipping_timeslot');
               $this->data['ship_slot_one'] = $this->language->get('ship_slot_one');
               $this->data['ship_slot_two'] = $this->language->get('ship_slot_two');
               $this->data['ship_slot_three'] = $this->language->get('ship_slot_three');
               $this->data['ship_slot_four'] = $this->language->get('ship_slot_four');
           ]]></add>
       </operation>

   </file>

</modification>

Моля, насочете ме.


person Arun Kumar K S    schedule 05.01.2014    source източник
comment
Като за начало вижте кода (HTML), който това създава - компилира ли/парси ли изобщо? Не изглежда, че затваряте вашите <input> тагове много добре... (Имате > веднага след като стартирате value=" - как трябва да работи това?) Как зададохте променливите $ship_slot_one и т.н.?   -  person Floris    schedule 06.01.2014
comment
здравей Флорис, просто се опитвах да направя нещо като показаното на изображението. Това изглежда добре на страницата за плащане. Сега съм заседнал в получаването на стойността на избрания вход и съхранявам същото в db   -  person Arun Kumar K S    schedule 06.01.2014


Отговори (1)


Както спомена Флорис - има знак > в частта стойност на входовете, което предполагам е неправилно. Също така е по-добре да поставите етикета на входа в истински HTML етикет, така че полето за отметка/радиото да се отметва при щракване върху този етикет (не е много удобно да трябва да щраквате върху малко квадратче за отметка/радио директно).

Сега към вашия проблем със запазването: бих предложил да създадете нова колона в DB в таблица order, наречена shipping_time_slot и от тип enum('opt1', 'opt2', 'etc.'). Тук ще съхраните избрания от Вас времеви интервал за доставка.

Сега за контролера, ще трябва да модифицирате (чрез vQmod) catalog/controller/checkout/shipping_method.php (допълнително трябва да направите същите модификации за плащане на гост - прилагат се различни файлове) и да получите shipping_timeslot стойността от POST и да я запишете в сесията заедно с цялата друга информация за доставка.

Накрая (но не наистина) ще трябва да модифицирате модела catalog/model/checkout/order.php и метода addOrder(), за да запазите стойността shipping_timeslot в базата данни.

Това трябва да е само за съхранение в база данни.

Но трябва да имате предвид, че трябва също да разширите бекенда (администрацията), за да можете да зареждате стойността shipping_timeslot от базата данни и да ги показвате в детайлите на поръчката - това означава модификации на поне тези файлове:

  • admin/controller/sale/order.php
  • admin/model/sale/order.php (може би не е необходимо)
  • admin/language/<YOUR_LANG>/sale/order.php - добавете нов превод за shipping_timeslot
  • admin/view/template/sale/order_info.tpl и admin/view/template/sale/order_form.tpl
person shadyyx    schedule 06.01.2014
comment
Благодаря за отговора..... позволете ми да опитам да направя това, което сте обяснили... изглежда сложно... това трябва да е крива на учене: - person Arun Kumar K S; 10.01.2014
comment
Това определено е крива на учене, но най-доброто, което мога да ти дам (просто да те изритам, а не да ти дам крайното решение - така че трябва да го направиш сам - така че да научиш най-много, което е възможно). - person shadyyx; 10.01.2014
comment
addOrder() методът е методът на модела. Той трябва да получава POSTed данните директно от контролера. MVC шаблонът означава ли нещо за вас? - person shadyyx; 10.02.2015
comment
да, благодаря, приятелю, разбра :) сега задачата е как да извлека тази стойност от администратора :( - person Amol Navsupe; 10.02.2015