Version: current

      1 <?php
      2
      3 /**
      4  * Страница для просмотра и редактирования корзины
      5  *
      6  * @package cart
      7  * @author dvp
      8  */
      9 class CartPage extends Page{
     10
     11     static $icon = "cart/img/cart";
     12     static $allowed_children = 'none';
     13
     14     static $defaults = array(
     15         'AutoChild' => 0,
     16         "DevEditType" => "Fixed",
     17         'ShowInSiteMap' => 0,
     18         'ShowInSearch' => 0,
     19         'ShowInMenu' => 0,
     20         'URLSegment' => 'cart',
     21     );
     22
     23     /**
     24      * Возвращает ссылку на страницу корзины
     25      *
     26      * @param string $action - действие со страницей
     27      * @return string ссылка на страницу
     28      */
     29     static function find_link($action = null) {
     30         if (!$page = DataObject::get_one('CartPage')) {
     31             user_error('Создайте страницу корзины', E_USER_ERROR);
     32         }
     33         return $page->Link($action);
     34     }
     35
     36     /**
     37      * Автоматическая генерация страницы
     38      * TODO локализация!!!
     39      */
     40     function requireDefaultRecords() {
     41         parent::requireDefaultRecords();
     42
     43         if (!$page = DataObject::get_one('CartPage')) {
     44             $page = new CartPage();
     45             $page->Title = $this->i18n_singular_name();
     46             $page->URLSegment = 'cart';
     47             $page->writeToStage('Stage');
     48             $page->publish('Stage', 'Live');
     49
     50             if (method_exists('DB', 'alteration_message'))
     51                 DB::alteration_message('Cart page created', 'created');
     52         }
     53     }
     54
     55     function canCreate() {
     56         return (DataObject::get_one('CartPage')) ? false : true;
     57     }
     58
     59     /**
     60      * Проверяет достаточна ли сумма заказа для оформления покупки
     61      *
     62      * @param int $price - сумма заказа [сумма в корзине]
     63      *
     64      * @return boolean
     65      */
     66     function CanCheckout($price=null) {
     67         return Cart::current_order()->CanCheckout($price);
     68     }
     69
     70     /**
     71      * Возвращает минимальную сумму для заказа
     72      *
     73      * @param bool $real - возвращать число, а не объект CatalogPrice
     74      *
     75      * @return int
     76      */
     77     function MinTotalPrice($real=false) {
     78         return Cart::current_order()->MinTotalPrice($real);
     79     }
     80
     81     /**
     82      * Проверяет, есть ли в корзине товары
     83      *
     84      * @return int
     85      */
     86     function HasItems() {
     87         return Cart::has_items();
     88     }
     89 }
     90
     91 class CartPage_Controller extends Page_Controller{
     92
     93     static $allowed_actions = array();
     94
     95     /**
     96      * Возвращает текущую корзину
     97      *
     98      * @return Order
     99      */
    100     function getCart() {
    101         return Cart::current_order();
    102     }
    103
    104     /**
    105      * Ссылка на очистку корзины
    106      *
    107      * @return string
    108      */
    109     function ClearCartLink() {
    110         return Cart_Controller::clear_link();
    111     }
    112 }

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