PHPackages                             pastuhov/yii2-yml-catalog - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. pastuhov/yii2-yml-catalog

ActiveYii2-extension[Utility &amp; Helpers](/categories/utility)

pastuhov/yii2-yml-catalog
=========================

YML (Yandex Market Language) generator.

v1.3.0(7y ago)2116.7k↓50%14GPL-2.0PHPPHP &gt;=5.3.0

Since Jun 25Pushed 7y ago7 watchersCompare

[ Source](https://github.com/pastuhov/yii2-yml-catalog)[ Packagist](https://packagist.org/packages/pastuhov/yii2-yml-catalog)[ Docs](https://github.com/pastuhov/yii2-yml-catalog)[ RSS](/packages/pastuhov-yii2-yml-catalog/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (6)Versions (31)Used By (0)

Компонент выгрузки каталога товаров в Яндекс.Маркет (YML)
=========================================================

[](#компонент-выгрузки-каталога-товаров-в-яндексмаркет-yml)

[![Build Status](https://camo.githubusercontent.com/4d0ef3ae21a674f74ed9e7f7f6aba84a40c1db48b0f10da23ddfefce1339b75f/68747470733a2f2f7472617669732d63692e6f72672f7061737475686f762f796969322d796d6c2d636174616c6f672e737667)](https://travis-ci.org/pastuhov/yii2-yml-catalog)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/37e9a33a17236047d51c3061cde2ee81bddf4d79b2391a7bc1d5c6111cba445e/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f7061737475686f762f796969322d796d6c2d636174616c6f672f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/pastuhov/yii2-yml-catalog/?branch=master)[![Code Coverage](https://camo.githubusercontent.com/a710e6b25bacb7a316b1bc945b68d7fa887690cbc77523a9931e5dc4ffa3c23a/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f7061737475686f762f796969322d796d6c2d636174616c6f672f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/pastuhov/yii2-yml-catalog/?branch=master)[![Total Downloads](https://camo.githubusercontent.com/8b1453159e5e46d658320a5d2d01d862be867b94c207c17de5f1062f77fe97da/68747470733a2f2f706f7365722e707567782e6f72672f7061737475686f762f796969322d796d6c2d636174616c6f672f646f776e6c6f616473)](https://packagist.org/packages/pastuhov/yii2-yml-catalog)

Установка
---------

[](#установка)

Via Composer

```
$ composer require pastuhov/yii2-yml-catalog
```

Features
--------

[](#features)

- легкий
- базируется на официальной документации

Использование
-------------

[](#использование)

1. Реализуем интерфейсы (примеры реализации всех классов смотри в директории `tests`)
2. Создаем консольный контроллер:

```
namespace console\controllers;

use pastuhov\ymlcatalog\actions\GenerateAction;
use yii\console\Controller;

/**
 * Class GenerateController
 */
class YmlController extends Controller
{
    /**
     * @inheritdoc
     */
    public function actions()
    {
        return [
            'generate' => [
                'class' => GenerateAction::className(),
                'enableGzip' => true, # запаковать gzip-ом yml после генерации
                'fileName' => 'yml-test.xml', # желаемое название файла
                'publicPath' => '@runtime/public', # публичная директория (обычно корень веб сервера)
                'runtimePath' => '@runtime', # временная директория
                'keepBoth' => true, # опубликовать yml и .gz
                'shopClass' => 'pastuhov\ymlcatalog\Test\models\Shop',
                'currencyClass' => 'pastuhov\ymlcatalog\Test\models\Currency',
                'categoryClass' => 'pastuhov\ymlcatalog\Test\models\Category',
                'localDeliveryCostClass' => 'pastuhov\ymlcatalog\Test\models\LocalDeliveryCost',
                'offerClasses' => [
                    'pastuhov\ymlcatalog\Test\models\SimpleOffer'
                ],
            ],
        ];
    }
}
```

3. Запускаем из консоли:

```
$ yii yml/generate
```

Дополнительно
-------------

[](#дополнительно)

Дополнительно с именем класса, реализации интерфейса, можно передавать следующие параметры:

1. Объект класса ActiveQuery, или его наследника.

```
'categoryClass' => [
    'class' => 'pastuhov\ymlcatalog\Test\models\Category',
    'query' => \pastuhov\ymlcatalog\Test\models\Category\Category::find(),
]
```

В данном случае, выборка данных будет производиться с помощью передаваемого ActiveQuery или его наследника; Позволяет использовать уже созданный объект, для выборки данных.

2. Объект класса ActiveDataProvider, или его наследника.

```
'categoryClass' => [
    'class' => 'class' => 'pastuhov\ymlcatalog\Test\models\Category',
    'dataProvider' => new ActiveDataProvider([
        'query' => Category::find(),
        'pagination' => [
            'pageSize' => 1000,
        ]
    ]),
]
```

В данном случае, выборка данных будет производиться с помощью передаваемого ActiveDataProvider или его наследника;

Позволяет делать выборку данных с использованием постраничной пагинации.

Так-же может быть передан true, в качестве параметра, для автоматического создания объекта класса ActiveDataProvider со значением количества строк в странице равной 1000.

```
'categoryClass' => [
    'class' => 'class' => 'pastuhov\ymlcatalog\Test\models\Category',
    'dataProvider' => new ActiveDataProvider([
        'query' => Category::find(),
        'pagination' => true,
    ]
]
```

На больших объемах данных, выборка, с использованием ActiveQuery-&gt;batch(), расходует оперативную память, гораздо большую, чем значение установленное в конфигурацилнных файлах. (Скорее всего особенности работы библиотеки PDO).

**Внимание:** Использование ActiveDataProvider увеличивает время генерации выгрузки.

Преобразование символов " &amp; &gt; &lt; ' в html-сущности
-----------------------------------------------------------

[](#преобразование-символов------в-html-сущности)

Яндекс Маркет ругается на символы " &amp; &gt; &lt; '. Их нужно преобразовывать в html-сущности, чтобы проверка прайса проходила успешно. Чтобы это сделать, в модели необходимо реализовать интерфейс pastuhov\\ymlcatalog\\EscapedAttributes и определить метод getEscapedAttributes, который возвращает список необходимых для чистки атрибутов. В примере ниже мы указываем, что атрибут name необходимо фильтровать:

```
use pastuhov\ymlcatalog\EscapedAttributes;
use pastuhov\ymlcatalog\SimpleOfferInterface;
class SimpleOffer extends ActiveRecord implements SimpleOfferInterface, EscapedAttributes
{
...
    public function getEscapedAttributes() {
        return [
            'name'
        ];
    }
...
}
```

Тестирование
------------

[](#тестирование)

```
$ composer test
```

или

```
$ phpunit
```

Проверить качество сгенерируемого файла можно следующими способами:

1. Официальным валидатором
2. При помощи `xmllint` (пример: xmllint --valid --noout yml-test.xml)
3. IDE PhpStorm также может помочь

Security
--------

[](#security)

If you discover any security related issues, please email  instead of using the issue tracker.

Credits
-------

[](#credits)

- [Kirill Pastukhov](https://github.com/pastuhov)
- [All Contributors](../../contributors)

License
-------

[](#license)

GNU General Public License, version 2. Please see [License File](LICENSE) for more information.

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity36

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity69

Established project with proven stability

 Bus Factor1

Top contributor holds 69.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~41 days

Recently: every ~91 days

Total

27

Last Release

2889d ago

Major Versions

v0.2 → 16.x-dev2016-08-23

v0.6.0 → v1.0.02017-09-14

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/7937221?v=4)[Pastuhov Kirill](/maintainers/pastuhov)[@pastuhov](https://github.com/pastuhov)

---

Top Contributors

[![pastuhov](https://avatars.githubusercontent.com/u/7937221?v=4)](https://github.com/pastuhov "pastuhov (90 commits)")[![PaVeL-Ekt](https://avatars.githubusercontent.com/u/2797861?v=4)](https://github.com/PaVeL-Ekt "PaVeL-Ekt (25 commits)")[![execut](https://avatars.githubusercontent.com/u/2357407?v=4)](https://github.com/execut "execut (6 commits)")[![RusNimex](https://avatars.githubusercontent.com/u/5466843?v=4)](https://github.com/RusNimex "RusNimex (5 commits)")[![4irik](https://avatars.githubusercontent.com/u/2486299?v=4)](https://github.com/4irik "4irik (1 commits)")[![scrutinizer-auto-fixer](https://avatars.githubusercontent.com/u/6253494?v=4)](https://github.com/scrutinizer-auto-fixer "scrutinizer-auto-fixer (1 commits)")[![truth4oll](https://avatars.githubusercontent.com/u/329323?v=4)](https://github.com/truth4oll "truth4oll (1 commits)")

---

Tags

generatorintegrationmarketshopyandexymlymlgeneratore-commerceyandex

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/pastuhov-yii2-yml-catalog/health.svg)

```
[![Health](https://phpackages.com/badges/pastuhov-yii2-yml-catalog/health.svg)](https://phpackages.com/packages/pastuhov-yii2-yml-catalog)
```

###  Alternatives

[symfony/maker-bundle

Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.

3.4k111.1M568](/packages/symfony-maker-bundle)[simplesoftwareio/simple-qrcode

Simple QrCode is a QR code generator made for Laravel.

2.9k27.6M92](/packages/simplesoftwareio-simple-qrcode)[bukashk0zzz/yml-generator

YML (Yandex Market Language) file generator

116186.3k](/packages/bukashk0zzz-yml-generator)[corpsepk/yii2-yandex-market-yml

Yii2 module for automatically generation Yandex.Market YML

1810.0k](/packages/corpsepk-yii2-yandex-market-yml)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
