Библиотека для генерации тестовых элементов для 1С Битрикс на основе Faker, которая позволит сэкономить время контент-менеджера и программиста для наполнения проекта данными и тестирования.
Библиотека находится в разработке (в будущем возможно изменение методов, параметров и т.п)
В будущем появится генератор не только элементов, но и разделов, элементов Highload блоков, генерация разных цен для разных валют, торговых предложений
Пример использования:
<?php
use GGrach\FishGenerator\Generators\FishGenerator;
\Bitrix\Main\Loader::includeModule('ggrachdev.fishgenerator');
/**
* В конструктор передаем IBLOCK ID в который нужно сгенерировать тестовый элемент
* При setDebugMode = true в результирующий массив записываются данные для генерации
* При setStrictMode = true выбрасываются Exception'ы если что-то идет не так
* Вторым параметром в конструктор можно передать локализацию faker, по умолчанию ru_RU
* По умолчанию автоматически генерируются: имя, детальное фото, фото анонса, детальный текст + текст анонса, символьный код
* Системными полями считаются: 'NAME', 'ACTIVE', 'CODE', 'IBLOCK_SECTION_ID', 'DETAIL_TEXT', 'PREVIEW_TEXT', 'SORT'
* Если поле является системным, то нужно установки правил генерации ставить * перед ним, если же свойство является дополнительно созданным и к
* нему нужно обращаться через PROPERTY_... то ничего в качестве префикса ставить не нужно
* В качестве способа генерации можно указывать любые методы библиотеки faker и передать параметры через (param_1, param_2):
* methodGenerate(1, 2, 3, 4, param 1, param 2) - Т.е если параметр строка - то скобки не надо ставить, массивы пока нельзя передавать
*/
// Генерировать в инфоблок с ID = 6
$result = (new FishGenerator(6))->setDebugMode(true)->setStrictMode(true)
->setCategoryPhoto(['technics', 'business', 'city'])
->setGenerationRules([
/*
* Если свойство является системым, то ставим в начале *, если свойство является дополнительным у инфоблока (Т.е PROPERTY_NAME), то не ставим
* Если нужно задать строгое значение свойства при добавлении элементов, то ставим =, можно группировать: *=, =, *, при этом в $
* будет подставлен номер генерируемого элемента
*/
'*=NAME' => 'Тестовый элемент $',
/*
* Если свойство является множественным, то передаем массив - 1 элемент массива задаем генератор (так же поддерживаются *, =), 2 элемент массива - кол-во элементов для генерации
* Если нужно сгененировать одиночное свойство, то передаем просто строку (в качестве значения)
*/
'PRODUCTION_PHOTOS' => [
'image', 7
],
'IMPLEMENTED_PROCESSES_POINTS' => [
'randomElement(Тестовый пункт, Еще один пункт, Пункт производства, Новый пункт, Пункт элемента, Тестовый процесс, Процесс производства, Новый процесс производства)', 5
],
'IMPLEMENTED_PROCESSES_VALUES' => [
'realText(100)', 5
],
// Свойство PROPERTY_NAME_IN_CATALOG сгенерировать через realText
'NAME_IN_CATALOG' => 'realText(50)',
// В свойство PROPERTY_URL сгенерировать домен
'URL' => 'freeEmailDomain'
'*IBLOCK_SECTION_ID' => 'randomSection'
// Сгенерировать 10 элементов
])->generate(10);
echo '<pre>';
print_r($result);
echo '</pre>';
?>
Доступные способы для генерации:
- inn // ИНН
- name // Имя
- kpp
- address
- realText(100)
- word
- city
- country
- phoneNumber
- company
- streetAddress
- date
- time
- year
- jobTitle
- numberBetween(0, 1000)
- randomElement(1,2,3,4)
- lastName
- firstName
- latitude
- longitude
- hexcolor
- image
- image(1000, 500) // Ширина, высота
- randomSection // Привязать элемент к случайной секции инфоблока
- ...прочие функции из faker'a