shopProduct
Класс используется для работы с одним товаром: позволяет получать информацию о товаре, модифицировать и сохранять товар в базу данных без явного обращения к классам моделей.
Array access
Работа с классом возможна путём обращения к объекту как к массиву (array access). При первом чтении данных выполняется обращение к базе данных и их загрузка в кеш. Последующее чтение извлекает данные из кеша.
Array access работает и при чтении, и при записи данных. При записи в объект данные сохраняются во внутреннем кеше, а в базу данных попадают только после вызова метода save().
Пример
$product = new shopProduct(100500); echo $product['name']; $product['name'] = 'Супертовар'; $product->save();
Доступные поля
// Поля таблицы 'shop_product', доступные для чтения и для записи. int $product['id'] string $product['name'] string $product['summary'] string $product['meta_title'] string $product['meta_keywords'] string $product['meta_description'] string $product['description'] int $product['contact_id'] string $product['create_datetime'] string $product['edit_datetime'] int $product['status'] int $product['type_id'] int $product['image_id'] string $product['image_filename'] string $product['video_url'] int $product['sku_id'] string $product['url'] string $product['currency'] int $product['tax_id'] int $product['count_denominator'] float $product['order_multiplicity_factor'] int $product['stock_unit_id'] int $product['base_unit_id'] float $product['stock_base_ratio'] float $product['order_count_min'] float $product['order_count_step'] float $product['base_price'] float $product['min_base_price'] float $product['max_base_price'] int $product['cross_selling'] int $product['upselling'] int $product['category_id'] string $product['badge'] int $product['sku_type'] float $product['base_price_selectable'] float $product['compare_price_selectable'] float $product['purchase_price_selectable'] // Поля таблицы 'shop_product', доступные только для чтения, потому что значения для них рассчитываются автоматически. float $product['price'] float $product['compare_price'] float $product['min_price'] float $product['max_price'] string $product['ext'] float $product['rating'] int $product['rating_count'] float|null $product['count'] float|null $product['total_sales'] int $product['sku_count'] // Поля объекта, доступные для чтения и для записи. // Более подробную информацию см. в описаниях методов getData() и setData() соответствующего класса модели. array $product['params'] // shopProductParamsModel array $product['skus'] // shopProductSkusModel array $product['sets'] // shopProductSetsModel array $product['tags'] // shopProductTagsModel array $product['features'] // shopProductFeaturesModel array $product['features_selectable'] // shopProductFeaturesSelectableModel array $product['categories'] // shopProductCategoriesModel array $product['og'] // shopProductOgModel // Поля объекта, доступные только для чтения. // Более подробную информацию см. в описании соответствующего метода. array $product['type'] // getType() string $product['currency_html'] // getCurrencyHtml() waContact $product['contact'] // getContact() array $product['images'] // getImages() array $product['pages'] // getPages() array $product['next_forecast'] // getNextForecast() array $product['reviews'] // getReviews() array $product['sku_features'] // getSkuFeatures()
Публичные методы
-
__construct
Конструктор класса.
-
isFrontend
Возвращает значение параметра
$is_frontend, переданного в конструктор класса. -
getId
Возвращает значение поля id.
-
getImages
Возвращает список изображений товара.
-
getPages
Возвращает список подстраниц товара.
-
getContact
Возвращает экземпляр класса
waContactс информацией о пользователе, создавшем товар. -
getCurrencyHtml
Возвращает HTML-код для обозначения символа валюты товара.
-
save
Сохраняет изменения в свойствах товара в базу данных.
-
getData
Возвращает данные из внутреннего кеша класса без обращения к базе данных.
-
setData
Записывает значение указанного поля во внутренний кеш класса.
-
getType
Возвращает информацию о типе товара.
-
upSelling
Возвращает список товаров, настроенных как схожие и альтернативные для данного товара.
-
crossSelling
Возвращает список товаров, настроенных как перекрёстные продажи для данного товара.
-
getNextForecast
Возвращает информацию о продажах товара за последние 90 дней и оценку продаж на будущее.
-
getReviews
Возвращает список отзывов покупателей о товаре.
-
getSkuFeatures
Возвращает информацию о значениях характеристик, указанных в свойствах модификаций товара.
-
checkRights
Возвращает информацию о правах доступа авторизованного пользователя к редактированию данного товара.
-
duplicate
Создаёт копию товара.
-
getProductUrl
Возвращает URL страницы товара на витрине.
-
getCanonicalCategory
Возвращает данные основной категории товара.
-
getCategoryUrl
Возвращает основной фрагмент URL основной категории товара.
-
getBreadcrumbs
Возвращает массив данных для формирования ссылок навигации с помощью «хлебных крошек» относительно страницы товара на витрине.
-
getVideo
Возвращает информацию о видеоролике товара.
-
getSkus
Возвращает информацию о модификациях товара.
-
getFeatures
Возвращает информацию о характеристиках товара.
public function __construct ($data = array(), $is_frontend = false)
Конструктор класса.
Параметры
-
$data
Либо ID товара, либо массив с данными товара, ключи которого соответствуют полям таблицы shop_product.
-
$is_frontend
Флаг, обозначающий режим использования экземпляра класса контроллерами фронтенда. В режиме фронтенда выполняется округление всех цен, возвращаемых этим классом, если округление настроено для валюты, выбранной текущим авторизованным пользователем. Значения полей в режиме фронтенда доступны только для чтения.
Пример
$product = new shopProduct(100500); echo $product['name'];
public function isFrontend()
Возвращает значение параметра $is_frontend, переданного в конструктор класса.
Пример
$product = new shopProduct(100500, true);
if ($product->isFrontend()) {
echo 'Объект товара — в режиме фронтенда!';
}
public function getId()
Возвращает значение поля id. Эквивалентно считыванию поля id.
Пример
$product = new shopProduct(100500); echo $product->getId(); //100500 echo $product['id']; //100500
public function getImages ($sizes = array(), $absolute = false)
Возвращает список изображений товара. Ключи массива — ID изображений, каждое значение массива — подмассив с информацией об изображении.
Параметры
-
$sizes
Размеры изображений, URL которых должны содержаться в возвращаемом массиве, в одном из следующих форматов:
- Ассоциативный массив key => size. В подмассив информации о каждом изображении добавляются элементы с ключами вида 'url_...' с каждым key вместо многоточия, значениями которых являются URL эскизов изображения с размерами, указанными в каждом size в одном из следующих форматов:
- ...x... (например, '96x96'): прямоугольник с указанной шириной и высотой, уменьшенный с сохранением пропорций до одного из указанных размеров, с отсечением части изображения, не вписавшейся в полученный уменьшенный прямоугольник;
- ...x0 (например, '96x0'): прямоугольник, уменьшенный с сохранением пропорций до указанной ширины;
- 0x... (например, '0x96'): прямоугольник, уменьшенный с сохранением пропорций до указанной высоты;
- ... (например, '96'): прямоугольник, уменьшенный с сохранением пропорций до указанной максимальной стороны.
- Простой массив строковых обозначений размеров 'big' ('970'), 'default' ('750x0'), 'default_fit' ('750'), 'thumb' ('200x0'), 'crop' ('96x96'), 'crop_small' ('48x48') или только одно из этих значений — без использования массива.
- Массив чисел, обозначающих уменьшение эскизов изображений до максимальной стороны, или только 1 число — без использования массива.
- Ассоциативный массив key => size. В подмассив информации о каждом изображении добавляются элементы с ключами вида 'url_...' с каждым key вместо многоточия, значениями которых являются URL эскизов изображения с размерами, указанными в каждом size в одном из следующих форматов:
-
$absolute
Флаг, обозначающий необходимость вернуть абсолютные URL эскизов изображений.
Пример
$product = new shopProduct(100500);
$images = $product->getImages([
'main' => '700x0',
'aux' => '200',
]);
wa_dump($images);
Результат
[
1 => [
'id' => '1',
'product_id' => '100500',
'upload_datetime' => '2000-01-01 00:00:00',
'edit_datetime' => NULL,
'description' => '',
'sort' => '0',
'width' => '1500',
'height' => '2000',
'size' => '1000000',
'filename' => '',
'original_filename' => '01.png',
'ext' => 'png',
'badge_type' => NULL,
'badge_code' => NULL,
'edit_datetime_ts' => NULL,
'url_main' => '/wa-data/public/shop/products/00/05/100500/images/1/1.700x0.png',
'url_aux' => '/wa-data/public/shop/products/00/05/100500/images/1/1.200.png',
],
...,
]
Пример
$product = new shopProduct(100500);
$images = $product->getImages('big');
wa_dump($images);
Результат
[
1 => [
'id' => '1',
'product_id' => '100500',
'upload_datetime' => '2000-01-01 00:00:00',
'edit_datetime' => NULL,
'description' => '',
'sort' => '0',
'width' => '1500',
'height' => '2000',
'size' => '1000000',
'filename' => '',
'original_filename' => '01.png',
'ext' => 'png',
'badge_type' => NULL,
'badge_code' => NULL,
'edit_datetime_ts' => NULL,
'url_big' => '/wa-data/public/shop/products/00/05/100500/images/1/1.970.png',
],
...,
]
Пример
$product = new shopProduct(100500);
$images = $product->getImages('big');
wa_dump($images);
Результат
[
1 => [
'id' => '1',
'product_id' => '100500',
'upload_datetime' => '2000-01-01 00:00:00',
'edit_datetime' => NULL,
'description' => '',
'sort' => '0',
'width' => '1500',
'height' => '2000',
'size' => '1000000',
'filename' => '',
'original_filename' => '01.png',
'ext' => 'png',
'badge_type' => NULL,
'badge_code' => NULL,
'edit_datetime_ts' => NULL,
'url_big' => '/wa-data/public/shop/products/00/05/100500/images/1/1.970.png',
],
...,
]
Пример
$product = new shopProduct(100500);
$images = $product->getImages(500);
wa_dump($images);
Результат
[
1 => [
'id' => '1',
'product_id' => '100500',
'upload_datetime' => '2000-01-01 00:00:00',
'edit_datetime' => NULL,
'description' => '',
'sort' => '0',
'width' => '1500',
'height' => '2000',
'size' => '1000000',
'filename' => '',
'original_filename' => '01.png',
'ext' => 'png',
'badge_type' => NULL,
'badge_code' => NULL,
'edit_datetime_ts' => NULL,
'url_500' => '/wa-data/public/shop/products/00/05/100500/images/1/1.500.png',
],
...,
]
public function getPages()
Возвращает список подстраниц товара. Вызов эквивалентен чтению поля pages. Каждый элемент возвращаемого массива является подмассивом, содержащим значения полей таблицы shop_product_pages.
Пример
$product = new shopProduct(100500); $pages = $product->getPages(); wa_dump($pages);
Результат
[
1 => [
'id' => '1',
'product_id' => '100500',
'name' => 'О товаре',
'title' => 'О товаре',
'url' => 'info',
'content' => '<p>...</p>',
'create_datetime' => '2000-01-01 00:00:00',
'update_datetime' => '2000-01-01 00:00:00',
'create_contact_id' => '1',
'sort' => '0',
'status' => '1',
'keywords' => '',
'description' => '',
],
...,
]
public function getContact()
Возвращает экземпляр класса waContact с информацией о пользователе, создавшем товар. Вызов эквивалентен чтению поля contact.
Пример
$product = new shopProduct(100500); echo $product->getContact()->getName(); // 'Иван Петров'
public function getCurrencyHtml()
Возвращает HTML-код для обозначения символа валюты товара. Вызов эквивалентен чтению поля currency_html.
Пример
$product = new shopProduct(100500); echo $product->getCurrencyHtml(); // '<span class="ruble">₽</span>'
public function save ($data = [])
Сохраняет в базу данных изменения, внесённые в свойства экземпляра класса с использованием array access либо также переданные в параметре $data.
Параметры
-
$data
Массив вида key => value со значениями полей таблицы shop_product. Использование этого параметра эквивалентно записи каждого значения по отдельности в поля экземпляра класса с последующим вызовом этого метода без параметра.
Пример
$product = new shopProduct();
// либо сразу передаём все значения в виде параметра-массива в метод save()
$product->save([
'name' => 'Супертовар',
'url' => 'superproduct',
]);
// либо сначала записываем каждое свойство по отдельности и затем вызываем метод save() без параметра
$product['name'] = 'Супертовар';
$product['url'] = 'superproduct';
$product->save();
public function getData ($name = null)
Возвращает данные из внутреннего кеша класса без обращения к базе данных. Если данных в кеше нет, метод возвращает null. Если данные в кеше есть, то вызов метода эквивалентен чтению поля экземпляра класса.
Параметры
-
$name
Поле экземпляра класса, значение которого нужно получить. Если название поля не указано, то метод возвращает всё содержимое кеша класса.
Пример
$product = new shopProduct();
$product['name'] = 'Супертовар';
$product['url'] = 'superproduct';
echo $product->getData('name'); //'Супертовар'
echo $product->getData('url'); //'superproduct'
public function setData ($name, $value)
Записывает значение указанного поля во внутренний кеш класса. Эквивалентно записи значения в экземпляр класса с использованием array access.
Пример
$product = new shopProduct();
$product->setData('name', 'Супертовар');
// то же самое, но с использованием array access
$product['name'] = 'Супертовар';
public function getType()
Возвращает информацию о типе товара в виде массива данных из таблицы shop_type. Вызов эквивалентен чтению поля type.
Пример
$product = new shopProduct(100500); $type = $product->getType(); wa_dump($type);
Результат
[
'id' => '1',
'sort' => '0',
'name' => 'Обычный товар',
'icon' => 'box',
'cross_selling' => 'alsobought',
'upselling' => '0',
'count' => '3149',
'stock_unit_fixed' => '2',
'stock_unit_id' => '0',
'base_unit_fixed' => '2',
'base_unit_id' => NULL,
'stock_base_ratio_fixed' => '2',
'stock_base_ratio' => '1.00000000',
'count_denominator_fixed' => '2',
'count_denominator' => NULL,
'order_multiplicity_factor_fixed' => '2',
'order_multiplicity_factor' => NULL,
'order_count_min_fixed' => '2',
'order_count_min' => NULL,
'order_count_step_fixed' => '2',
'order_count_step' => NULL,
]
public function upSelling ($limit = 5, $available_only = false)
Возвращает список товаров, настроенных как схожие и альтернативные для данного товара.
Параметры
-
$limit
Максимальное количество возвращаемых рекомендуемых товаров.
-
$available_only
Флаг, обозначающий необходимость возвращать только рекомендуемые товары, имеющиеся на складе и доступные для заказа.
Пример
$product = new shopProduct(100500); $upselling_products = $product->upSelling(3); wa_dump($upselling_products);
Результат
[
26521 => [
id => '26521'
name => 'Боинг 747'
summary => '...'
...
],
26522 => [
id => '26522'
name => 'Боинг 767'
summary => '...'
...
],
...,
]
public function crossSelling ($limit = 5, $available_only = false, $exclude = array())
Возвращает список товаров, настроенных как перекрёстные продажи для данного товара.
Параметры
-
$limit
Максимальное количество возвращаемых рекомендуемых товаров.
-
$available_only
Флаг, обозначающий необходимость возвращать только рекомендуемые товары, имеющиеся на складе и доступные для заказа.
-
$exclude
Массив ID товаров, которые нужно исключить из возвращаемого массива.
Пример
$product = new shopProduct(100500); $cross_selling_products = $product->crossSelling(3); wa_dump($cross_selling_products);
Результат
[
26468 => [
id => '26468'
name => 'Изделия из ротанга'
summary => 'Шары, звезды, сердца, месяцы'
...
],
26469 => [
id => '26469'
name => '...'
summary => '...'
...
],
...,
]
public function getNextForecast()
Возвращает информацию о продажах товара за последние 90 дней и оценку продаж на будущее. Эквивалентно чтению поля next_forecast.
Пример
$product = new shopProduct(100500); $forecast = $product->getNextForecast(); wa_dump($forecast);
Результат
[
sales => 19980 // сумма продаж в основной валюте магазина
sold => 2 // среднее количество продаж в месяц на базе статистики за 90 дней
sold_rounded => 2 // среднее количество продаж в месяц, округлённое до целого
sold_rounded_1 => 2 // среднее количество продаж в месяц, округлённое до 1 десятичного знака
sold_rounded_1_str => '2.0' // среднее количество продаж в месяц, округлённое и отформатированное в виде строки
profit => 19980 // прибыль с продаж, выраженная в основной валюте магазина
days => 150 // количество дней, по истечении которых, согласно прогнозу, товар закончится на складе
date => 1464444704 // метка UNIX дня, по истечении которого, согласно прогнозу, товар закончится на складе
count => 10 // количество товара на складе
]
public function getReviews()
Возвращает список отзывов покупателей о товаре. Эквивалентно чтению поля reviews.
Пример
$product = new shopProduct(100500); $reviews = $product->getReviews(); wa_dump($reviews);
Результат
[
1 => [
'id' => '1',
'left_key' => '1',
'right_key' => '2',
'depth' => '0',
'parent_id' => '0',
'product_id' => '100500',
'review_id' => '0',
'datetime' => '2000-00-00 13:00:00',
'status' => 'approved',
'title' => 'Супер!',
'text' => 'Покупаю уже в сотый раз. Бескомпромиссно лучший товар на всём белом свете.',
'rate' => '5.00',
'contact_id' => '99',
'name' => NULL,
'email' => NULL,
'images_count' => '0',
'site' => NULL,
'auth_provider' => 'user',
'ip' => '2130706433',
'images' => [],
'datetime_ts' => 1668508693,
'author' => [
'name' => 'Смирнов Виктор',
'email' => NULL,
'site' => NULL,
'id' => '1',
'is_user' => '1',
'is_company' => '0',
'photo' => '0',
'photo_url_50' => '/wa-content/img/userpic50@2x.jpg',
'photo_url_20' => '/wa-content/img/userpic20@2x.jpg',
],
],
]
public function getSkuFeatures()
Возвращает информацию о значениях характеристик, указанных в свойствах модификаций товара. Эквивалентно чтению поля sku_features.
Пример
$product = new shopProduct(100500); $sku_features = $product->getSkuFeatures(); wa_dump($sku_features);
Результат
[
3182 => [
'razmer' => 'L',
'weight' => shopDimensionValue object {
shopDimensionValuevalue => '120'
shopDimensionValueunit => 'g'
shopDimensionValuetype => 'weight'
shopDimensionValueunits => NULL
shopDimensionValuevalue_base_unit => '0.12'
shopDimensionValuebase_code => NULL
shopDimensionValueformat => false
id => '1'
feature_id => '1'
sort => '0'
},
],
3183 => [
'razmer' => 'XL',
'weight' => shopDimensionValue object {
shopDimensionValuevalue => '150'
shopDimensionValueunit => 'g'
shopDimensionValuetype => 'weight'
shopDimensionValueunits => NULL
shopDimensionValuevalue_base_unit => '0.12'
shopDimensionValuebase_code => NULL
shopDimensionValueformat => false
id => '2'
feature_id => '1'
sort => '2'
},
],
]
public function checkRights()
Возвращает информацию о правах доступа авторизованного пользователя к редактированию данного товара.
Пример
$product = new shopProduct(100500);
if ($product->checkRights()) {
// у авторизованного пользователя есть доступ к редактированию товара
}
public function duplicate()
Создаёт копию товара и возвращает экземпляр класса, соответствующего созданной копии.
Пример
$product = new shopProduct(100500); $new_product = $product->duplicate();
public function getProductUrl ($storefront = null, $set_canonical = false, $absolute = true)
Возвращает URL страницы товара на витрине.
Параметры
-
$storefront
Обозначение витрины, для которой нужно получить URL страницы товара. Доступные варианты значений:
true: Для формирования URL страницы товара использовать адрес витрины, полученный автоматическим подбором: текущей витрины — для фронтенда, первой из списка витрин — для бекенда.- Строка с доменом и адресом витрины, например,
'mydomain.ru/shop/'.
-
$set_canonical
Флаг, обозначающий необходимость получить канонический URL страницы товара, сформированный с учётом URL страницы его основной категории (для типов адресов «Естественный» и «Плоский»).
-
$absolute
Флаг, обозначающий необходимость получить абсолютный URL страницы товара.
Пример
$product = new shopProduct(100500); echo $product->getProductUrl(true, true, true); // http://mydomain.ru/shop/sale/superproduct/ echo $product->getProductUrl(true, true, false); // /shop/sale/superproduct/ echo $product->getProductUrl(true, false, true); // http://mydomain.ru/shop/superproduct/
public function getCanonicalCategory ($route = null)
Возвращает данные основной категории товара, если она доступна на указанной витрине.
Параметры
-
$route
Массив с параметрами витрины, для которой нужно проверить доступность основной категории товара. Если значение не указано, то проверка доступности основной категории товара на витрине не выполняется.
Пример
$product = new shopProduct(100500); $canonical_category = $product->getCanonicalCategory($route);
public function getCategoryUrl ($route = null)
Возвращает основной фрагмент URL основной категории товара, если она доступна на указанной витрине.
Параметры
-
$route
Массив с параметрами витрины, для которой нужно проверить доступность основной категории товара. Если значение не указано, то проверка доступности основной категории товара на витрине не выполняется.
Пример
$product = new shopProduct(100500); $canonical_category_url_part = $product->getCategoryUrl($route); // 'sale/accessories'
public function getBreadcrumbs ($product_link = false, $route = null)
Возвращает массив данных для формирования ссылок навигации с помощью «хлебных крошек» относительно страницы товара на витрине.
Параметры
-
$product_link
Флаг, обозначающий необходимость добавить в возвращаемый массив «хлебных крошек» информацию о товаре.
-
$route
Массив с параметрами витрины, с учётом настроек которой нужно получить данные для формирования ссылок «хлебных крошек». Если значение не указано, то учитываются настройки текущей витрины.
Пример
$product = new shopProduct(100500); $breadcrumbs_data = $product->getBreadcrumbs(true);
Результат
[
13 => [
'url' => '/shop/accessories',
'name' => 'Аксессуары',
],
16 => [
'url' => '/shop/accessories/cases/',
'name' => 'Чехлы',
],
0 => [
'url' => NULL,
'name' => 'Чехол для планшета',
],
]
public function getVideo ($sizes = array(), $absolute = false)
Возвращает информацию о видеоролике товара.
Параметры
-
$sizes
Строковое обозначение эскиза изображения видеоролика или массив таких обозначений. Допустимые варианты обозначения размеров см. в описании метода getImages(). URL эскизов с указанными размерами включаются в массив данных, возвращаемый методом.
-
$absolute
Флаг, обозначающий необходимость вернуть абсолютные URL эскизов вместо относительных.
Пример
$product = new shopProduct(100500); wa_dump($product->getVideo(['96x96', '100', '200x0'], true));
Результат
[
'product_id' => '100500',
'orig_url' => 'http://youtu.be/...',
'url' => '//www.youtube.com/embed/...',
'width' => 560,
'height' => 315,
'images' => [
'http://mydomain.ru/wa-data/public/shop/products/00/05/100500/video/96x96.jpg',
'http://mydomain.ru/wa-data/public/shop/products/00/05/100500/video/100.jpg',
'http://mydomain.ru/wa-data/public/shop/products/00/05/100500/video/200x0.jpg',
],
]
public function getSkus()
Возвращает информацию о модификациях товара: значения полей таблицы shop_product_skus и количество на всех настроенных складах.
Пример
$product = new shopProduct(100500); wa_dump($product->getSkus());
Результат
[
398 => [
'id' => '398',
'product_id' => '100500',
'sku' => '...',
'sort' => '1',
'name' => 'белый',
'image_id' => '0',
'price' => 99.0,
'primary_price' => 0.0,
'purchase_price' => 0.0,
'compare_price' => 0.0,
'count' => '12.000',
'available' => '1',
'stock_base_ratio' => NULL,
'order_count_min' => NULL,
'order_count_step' => NULL,
'status' => '1',
'dimension_id' => NULL,
'file_name' => '',
'file_size' => '0',
'file_description' => NULL,
'virtual' => '0',
'stock' => [
2 => '0.000',
1 => '12.000',
],
],
]
public function getFeatures ($status = null)
Возвращает информацию о характеристиках товара.
Параметры
-
$status
Обозначение видимости характеристик на витрине:
'public'(вернуть только видимые характеристики),'all'(вернуть все характеристики),null(на витрине: вернуть только видимые характеристики, в противном случае: вернуть все характеристики).
Пример
$product = new shopProduct(100500); wa_dump($product->getFeatures());
Результат
[
'accessory_type' => 'чехол',
'country_of_production' => 'Китай',
'suitable_for' => [
264 => 'планшеты',
],
'weight' => shopDimensionValue object {
shopDimensionValuevalue => '0.1'
shopDimensionValueunit => 'kg'
shopDimensionValuetype => 'weight'
shopDimensionValueunits => NULL
shopDimensionValuevalue_base_unit => '0.1'
shopDimensionValuebase_code => NULL
shopDimensionValueformat => false
id => '200'
feature_id => '95'
sort => '135'
},
]









