Webylon 3.1 API Docs
  • Package
  • Class
  • Tree
  • Deprecated
  • Download
Version: current
  • 3.2
  • 3.1

Packages

  • auth
  • Booking
  • cart
    • shipping
    • steppedcheckout
  • Catalog
  • cms
    • assets
    • batchaction
    • batchactions
    • bulkloading
    • comments
    • content
    • core
    • export
    • newsletter
    • publishers
    • reports
    • security
    • tasks
  • Dashboard
  • DataObjectManager
  • event
  • faq
  • forms
    • actions
    • core
    • fields-basic
    • fields-dataless
    • fields-datetime
    • fields-files
    • fields-formatted
    • fields-formattedinput
    • fields-relational
    • fields-structural
    • transformations
    • validators
  • googlesitemaps
  • guestbook
  • installer
  • newsletter
  • None
  • photo
    • gallery
  • PHP
  • polls
  • recaptcha
  • sapphire
    • api
    • bulkloading
    • control
    • core
    • cron
    • dev
    • email
    • fields-formattedinput
    • filesystem
    • formatters
    • forms
    • i18n
    • integration
    • misc
    • model
    • parsers
    • search
    • security
    • tasks
    • testing
    • tools
    • validation
    • view
    • widgets
  • seo
    • open
      • graph
  • sfDateTimePlugin
  • spamprotection
  • stealth
    • captha
  • subsites
  • userform
    • pagetypes
  • userforms
  • webylon
  • widgets

Classes

  • CheckoutStep
  • CheckoutStep_ContactDetails
  • CheckoutStep_Membership
  • CheckoutStep_PaymentMethod
  • CheckoutStep_Summary
  • SteppedCheckout
 1 <?php
 2 
 3 /**
 4  * Шаг занесения контактной информации и адреса (если есть доставка)
 5  *
 6  * Для шага можно использовать шаблоны: CheckoutPage_contactdetails, CheckoutPage, Page
 7  *
 8  * @package cart
 9  * @subpackage steppedcheckout
10  * @author dvp
11  */
12 class CheckoutStep_ContactDetails extends CheckoutStep {
13 
14     static $allowed_actions = array('contactdetails', 'ContactDetailsForm');
15 
16     /**
17      * Action для показа шага
18      */
19     function contactdetails() {
20         if (SiteConfig::current_site_config()->CartRegisterRequire && !Member::currentUser()) {
21             return Director::redirect('/Security/login?BackURL=' . $this->owner->Link());
22         }
23         $form = $this->ContactDetailsForm();
24         //Загружаем данные в форму, только если не было ошибок валидации
25         //иначе эти данные затирают то, что ввел пользователь
26         if ($form->MessageType() != 'required') {
27             // взять данные из текущего пользователя
28             if($member = Member::currentUser()){
29                 $form->loadDataFrom($member);
30             }
31             // взять данные из сессии
32             $form->loadDataFrom(Cart::get_info());
33         }
34         return array(
35             'Title' => $this->stepTitle(),
36             'Content' => $this->stepMessage(),
37             'Form' => $form
38         );
39     }
40 
41     /**
42      * Возвращает форму контактной информации
43      *
44      * Форму можно изменить с помощью расширения подключенного к CheckoutPage_Controller
45      * В расширении можно определить методы:
46      * updateContactDetailsForm(Form &$form) - для изменения формы в целом.
47      * updateContactDetailsFields(FieldSet &$fields) - для изменения списка полей формы
48      *
49      * Либо с помощью расширений подключенных к Order
50      * @see Order::getContactFields()
51      *
52      * @return Form
53      */
54     function ContactDetailsForm() {
55         $form = new Form(
56             $this->owner,
57             'ContactDetailsForm',
58             $this->owner->getContactDetailsFields(),
59             $this->getStepActions(new FormAction("setcontactdetails", _t('OrderForm.SaveContactsButton', "Continue"))),
60             new RequiredFields($this->owner->getOrderRequired())
61         );
62         $this->owner->extend('updateContactDetailsForm', $form);
63         return $form;
64     }
65 
66     /**
67      * Метод сохранения контактной информации
68      *
69      * Вызывается из формы при ее субмите.
70      * Сохраняет данные шага в корзине для последующего использования и делает редирект на следующий шаг
71      * При изменении формы могут потребоваться дополнительные действия, их можно определить в расширении на CheckoutPage_Controller
72      * В расширении можно определить методы:
73      * onBeforeSetContactDetails(&$data, Form &$form) - для действий до сохранения
74      * onAfterSetContactDetails(&$data, Form &$form) - для изменения после сохранения
75      *
76      * @param array $data - данные формы
77      * @param Form $form - форма шага
78      *
79      */
80     function setcontactdetails($data, $form) {
81         $this->owner->extend('onBeforeSetContactDetails', $data, $form);
82         foreach ($form->fields()->saveableFields() as $field) {
83             if ($field->name == 'SecurityID') continue;
84             Cart::set_info($field->name, $data[$field->name]);
85         }
86         $this->owner->extend('onAfterSetContactDetails', $data, $form);
87         Director::redirect($this->NextStepLink());
88     }
89 
90 }
[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. -
Webylon 3.1 API Docs API documentation generated by ApiGen 2.8.0