Version: current

# Class CheckoutPage_Controller

The most common kind of controller; effectively a controller linked to a `DataObject`.

ContentControllers are most useful in the content-focused areas of a site. This is generally the bulk of a site; however, they may be less appropriate in, for example, the user management section of an application.

On its own, content controller does very little. Its constructor is passed a `DataObject` which is stored in $this->dataRecord. Any unrecognised method calls, for example, Title() and Content(), will be passed along to the data record,

Subclasses of ContentController are generally instantiated by ModelAsController; this will create a controller based on the URLSegment action variable, by looking in the SiteTree table.

  Object
  ViewableData implements IteratorAggregate
  RequestHandler
  Controller
  ContentController
  Page_Controller
  CheckoutPage_Controller

Package: sapphire\control
Located at cart/code/CheckoutPage.php

## Methods summary

`public` | # `isEmptyContent( )` #### Overrides `Page_Controller::isEmptyContent`
`public `Form`|null` | # `Form( )` Обертка для OrderForm для шаблона Обертка для OrderForm для шаблона #### Returns ``Form`|null` Form|NULL
`public <type>` | # `OrderForm( )` Форма оформления заказа без шагов Форма оформления заказа без шагов Форма годится только для простого случая (без авторизации, доставки или оплаты) и не используется если настроены шаги Форму можно изменить с помощью расширения подключенного к CheckoutPage_Controller В расширении можно определить метод: updateOrderForm(Form &$form) - для изменения формы в целом. Либо с помощью расширений подключенных к Order #### Returns `<type>` <type> #### See ``Order::getFrontendFields()``
`public string` | # `saveorder( array $data, `Form` $form )` Метод для размещения заказа. Метод для размещения заказа. Вызывается из формы при ее субмите. Первоначально запоминает данные формы в корзине, после - вызывает метод CheckoutPage->placeOrder() для размещения заказа на сайте. В случае успешного размещения заказа - показывает страницу с уведомлением. Использует шаблоны: CheckoutPage_done, CheckoutPage, Page #### Parameters $data array $data - данные формы $form Form $form - форма шага #### Returns `string` string
`public mixed` | # `placeOrder( `Order` $order = null )` Размещает заказ в магазине. Вызывается после прохождения всех шагов оформления заказа. В случае ошибки ее текст можно получить с помощью getOrderError(). Позволяет использовать расширения: OnBeforeOrder(Order &$order) - вызывается до размещения заказа и проверок на валидность OnAfterOrder(Order &$order) - вызывается после размещения заказа до отсылки письма Размещает заказ в магазине. Вызывается после прохождения всех шагов оформления заказа. В случае ошибки ее текст можно получить с помощью getOrderError(). Позволяет использовать расширения: OnBeforeOrder(Order &$order) - вызывается до размещения заказа и проверок на валидность OnAfterOrder(Order &$order) - вызывается после размещения заказа до отсылки письма #### Parameters $order Order $order - предварительный заказ для размещения, по умолчанию - текущая корзина. #### Returns `mixed` $order или false если заказ не прошел валидацию
`public string` | # `getOrderError( )` Возвращает ошибку при размещении заказа Возвращает ошибку при размещении заказа #### Returns `string` string
`public` | # `order( )` Показывает информацию о заказе после его оформления Показывает информацию о заказе после его оформления Заказ определяется через url вида /order/order/204b22a36e328000dbb841cb3ac4d45e по HashLink заказа Использует шаблон CheckoutPage_order #### TODO дополнительная проверка пользователя по email ? номеру заказа
`public` | # `printorder( )` Показывает страницу печати заказа Использует шаблон CheckoutPage_printorder Показывает страницу печати заказа Использует шаблон CheckoutPage_printorder
`public `FieldSet`` | # `getContactDetailsFields( )` Список полей для формы контактной информации Список полей для формы контактной информации В расширении можно определить метод: updateContactDetailsFields(FieldSet &$fields) - для изменения списка полей формы #### Returns ``FieldSet`` FieldSet
`public `FieldSet`` | # `getSummaryFields( )` Список полей для формы подтверждения заказа Список полей для формы подтверждения заказа В расширении можно определить метод: updateSummaryFields(FieldSet &$fields) - для изменения списка полей формы #### Returns ``FieldSet`` FieldSet
`public array` | # `getOrderRequired( )` Список обязательный полей для формы заказа Список обязательный полей для формы заказа В расширении можно определить метод: updateOrderRequired(array &$fields) - для изменения списка обязательных полей формы #### Returns `array` array

### Methods inherited from Page_Controller

`BaseURL()`, `DocPath()`, `FavIcon()`, `HomePage()`, `ImageGalleryRandomImage()`, `PageByClass()`, `PageByID()`, `Random()`, `RedirectToFirstChild()`, `ShowWidget()`, `Siblings()`, `SitePoll()`, `combine_files()`, `init()`, `setSEOVars()`

### Methods inherited from ContentController

`ChildrenOf()`, `ContentLocale()`, `LangAttributes()`, `Link()`, `LoginForm()`, `Menu()`, `Page()`, `PageComments()`, `SilverStripeNavigator()`, `SiteConfig()`, `__construct()`, `data()`, `deleteinstallfiles()`, `getMenu()`, `handleRequest()`, `handleWidget()`, `httpError()`, `project()`, `successfullyinstalled()`

### Methods inherited from Controller

`CurrentMember()`, `Now()`, `PastMember()`, `PastVisitor()`, `can()`, `curr()`, `defaultAction()`, `disableBasicAuth()`, `getAction()`, `getFormOwner()`, `getRequest()`, `getResponse()`, `getSession()`, `getURLParams()`, `getViewer()`, `handleAction()`, `hasAction()`, `hasActionTemplate()`, `has_curr()`, `isAjax()`, `join_links()`, `popCurrent()`, `pushCurrent()`, `redirect()`, `redirectBack()`, `redirectedTo()`, `render()`, `setSession()`, `setURLParams()`

### Methods inherited from RequestHandler

`allowedActions()`, `checkAccessAction()`

### Methods inherited from ViewableData

`ATT_val()`, `BaseHref()`, `CSSClasses()`, `ColumnBreak()`, `ColumnCalc()`, `ColumnNumber()`, `ColumnPad()`, `ColumnPos()`, `CurrentPage()`, `Debug()`, `Even()`, `EvenOdd()`, `First()`, `FirstLast()`, `HasPerm()`, `IsAjax()`, `JS_val()`, `Last()`, `Me()`, `Middle()`, `MiddleString()`, `Modulus()`, `MultipleOf()`, `Odd()`, `Pos()`, `RAW_val()`, `SQL_val()`, `ThemeDir()`, `ThemeName()`, `Top()`, `TotalItems()`, `XML_val()`, `__get()`, `__isset()`, `__set()`, `buildCastingCache()`, `cachedCall()`, `castingClass()`, `castingHelper()`, `castingHelperPair()`, `castingObjectCreator()`, `castingObjectCreatorPair()`, `customise()`, `defineMethods()`, `escapeTypeForField()`, `getField()`, `getIterator()`, `getSecurityID()`, `getXMLValues()`, `hasField()`, `hasValue()`, `i18nLocale()`, `iteratorProperties()`, `obj()`, `renderWith()`, `setCustomisedObj()`, `setField()`

### Methods inherited from Object

`__call()`, `__toString()`, `__wakeup()`, `addMethodsFrom()`, `addStaticVars()`, `addWrapperMethod()`, `add_extension()`, `add_static_var()`, `allMethodNames()`, `cacheToFile()`, `cacheToFileWithArgs()`, `clearCache()`, `combined_static()`, `create()`, `createMethod()`, `create_from_string()`, `exists()`, `extInstance()`, `extend()`, `getCustomClass()`, `getExtensionInstance()`, `getExtensionInstances()`, `get_extensions()`, `get_static()`, `hasExtension()`, `hasMethod()`, `has_extension()`, `invokeWithExtensions()`, `is_a()`, `loadCache()`, `parentClass()`, `parse_class_spec()`, `remove_extension()`, `sanitiseCachename()`, `saveCache()`, `set_stat()`, `set_static()`, `set_uninherited()`, `stat()`, `strong_create()`, `uninherited()`, `uninherited_static()`, `useCustomClass()`

### Magic methods summary

## Properties summary

`public static array` | $allowed_actions | # Define a list of action handling methods that are allowed to be called directly by URLs. The variable should be an array of action names. This sample shows the different values that it can contain: Define a list of action handling methods that are allowed to be called directly by URLs. The variable should be an array of action names. This sample shows the different values that it can contain:
    array(
            'someaction', // someaction can be accessed by anyone, any time
            'otheraction' => true, // So can otheraction
            'restrictedaction' => 'ADMIN', // restrictedaction can only be people with ADMIN privilege
            'complexaction' '->canComplexAction' // complexaction can only be accessed if $this->canComplexAction() returns true
    );

### Properties inherited from ContentController

`$dataRecord`, `$url_handlers`

### Properties inherited from Controller

`$action`, `$baseInitCalled`, `$basicAuthEnabled`, `$controller_stack`, `$request`, `$requestParams`, `$response`, `$session`, `$urlParams`

### Properties inherited from RequestHandler

`$brokenOnConstruct`

### Properties inherited from ViewableData

`$casting`, `$customisedObject`, `$default_cast`, `$failover`, `$iteratorPos`, `$iteratorTotalItems`

### Properties inherited from Object

`$class`, `$extension_instances`, `$extensions`

[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. -