Version: current

     1 <?php
     2
     3 /**
     4  * Шаг подтверждения заказа
     5  *
     6  * Для шага можно использовать шаблоны: CheckoutPage_summary, CheckoutPage, Page
     7  * В шаблоне надо выводить:
     8  * - состав заказа $Order.Items
     9  * - данные заказа (кроме $Order.ClientNotes)
    10  * - форму шага $Form
    11  *
    12  * @package cart
    13  * @subpackage steppedcheckout
    14  * @author dvp
    15  */
    16 class CheckoutStep_Summary extends CheckoutStep{
    17
    18     static $allowed_actions = array('summary', 'SummaryForm');
    19
    20     /**
    21      * Action для показа шага
    22      */
    23     function summary() {
    24         if (SiteConfig::current_site_config()->CartRegisterRequire && !Member::currentUser()) {
    25             return Director::redirect('/Security/login?BackURL=' . $this->owner->Link());
    26         }
    27         $order = Cart::current_order();
    28         $form = $this->SummaryForm();
    29
    30         foreach ($this->owner->getOrderRequired() as $name) {
    31             if ($order->getField($name)) continue;
    32             if ($form->fields()->dataFieldByName($name)) continue;
    33             return Director::redirect($this->owner->Link());
    34         }
    35
    36         $form->loadDataFrom(Cart::get_info());
    37         $order->ClientNotes = '';
    38
    39         return array(
    40             'Title' => $this->stepTitle(),
    41             'Content' => $this->stepMessage(),
    42             'Order' => $order,
    43             'Form' => $form
    44         );
    45     }
    46
    47     /**
    48      * Возвращает форму подтверждения заказа
    49      *
    50      * В качестве действия использует метод владельца saveorder()
    51      * Форму можно изменить с помощью расширения подключенного к CheckoutPage_Controller
    52      * В расширении можно определить методы:
    53      * updateSummaryForm(Form &$form) - для изменения формы в целом.
    54      * updateSummaryFields(FieldSet &$fields) - для изменения списка полей формы
    55      *
    56      * Либо с помощью расширений подключенных к Order
    57      * @see Order::getSummaryFields()
    58      *
    59      * @return Form
    60      */
    61     function SummaryForm(){
    62         $required = $this->owner->getOrderRequired();
    63         $siteConfig = SiteConfig::current_site_config();
    64         if ($siteConfig->hasMethod('SiteAgreementField') && ($rulesField = $siteConfig->SiteAgreementField())) {
    65             $required[] = $rulesField->Name();
    66         }
    67         $form = new Form(
    68             $this->owner,
    69             "SummaryForm",
    70             $this->owner->getSummaryFields(),
    71             $this->getStepActions(new FormAction("saveorder", _t('OrderForm.SaveOrderButton', "Confirm and Pay"))),
    72             new CustomRequiredFields($required)
    73         );
    74         $form->addExtraClass('checkoutComment');
    75
    76         $this->owner->extend('updateSummaryForm', $form);
    77         return $form;
    78     }
    79 }

[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the Silverstripe Forums to ask development related questions. -