Simplifies calling Magento data structures.
Supported Magento Versions Latest Stable Version Composer Downloads Maintained - YesCalling Magento data structures can be confusing. There are many classes available, and knowing which to call and when can be confusing & overwhelming.
This module aims to simplify calling these data structures. All classes are prefixed with Simple so they are easy to lookup within IDEs. They also follow a pretty standard naming convention which aligns with Magento's way of naming modules. It also provides a SimpleDataPatch class which greatly simplifies writing data patch scripts.
For example, here is a data patch script to update the content of a CMS page with and without SimpleData:
composer require markshust/magento2-module-simpledata bin/magento module:enable MarkShust_SimpleData bin/magento setup:upgrade
Here are the signatures of the simplified data structures classes:
MarkShust\SimpleData\Api\Data\Cms\SimpleBlock
/** * Delete a block from a given identifier and optional store id. * @param string $identifier * @param int $storeId */ public function delete(string $identifier, int $storeId = Store::DEFAULT_STORE_ID): void /** * If the CMS block identifier is found, attempt to update the record. * If it is not found, attempt to create a new record. * @param array $data */ public function save(array $data): void
MarkShust\SimpleData\Api\Data\Cms\SimplePage
/** * Delete a page from a given identifier and optional store id. * @param string $identifier * @param int $storeId */ public function delete(string $identifier, int $storeId = Store::DEFAULT_STORE_ID): void /** * If the CMS page identifier is found, attempt to update the record. * If it is not found, attempt to create a new record. * @param array $data */ public function save(array $data): void
<?php declare(strict_types = 1); namespace MarkShust\Data\Setup\Patch\Data; use MarkShust\SimpleData\Setup\Patch\SimpleDataPatch; class BlockFooBarCreate extends SimpleDataPatch { public function apply(): self { $this->block->save([ 'identifier' => 'foo_bar', 'title' => 'Foo bar', 'content' => <<<CONTENT <div class="foo-bar"> Foo bar </div> CONTENT, ]); } }
<?php declare(strict_types = 1); namespace MarkShust\Data\Setup\Patch\Data; use MarkShust\SimpleData\Setup\Patch\SimpleDataPatch; class BlockFooBarDelete extends SimpleDataPatch { public function apply() { $this->block->delete('foo_bar'); } }
<?php declare(strict_types = 1); namespace MarkShust\Data\Setup\Patch\Data; use MarkShust\SimpleData\Setup\Patch\SimpleDataPatch; class BlockFooBarUpdate extends SimpleDataPatch { public function apply() { $this->block->save([ 'identifier' => 'foo_bar', 'title' => 'Foo bar 1', ]); } }
<?php declare(strict_types = 1); namespace MarkShust\Data\Setup\Patch\Data; use MarkShust\SimpleData\Setup\Patch\SimpleDataPatch; class PageFooBarCreate extends SimpleDataPatch { public function apply() { $this->page->save([ 'identifier' => 'foo_bar', 'title' => 'Foo bar', 'content' => <<<CONTENT <div class="foo-bar"> Foo bar </div> CONTENT, ]); } }
<?php declare(strict_types = 1); namespace MarkShust\Data\Setup\Patch\Data; use MarkShust\SimpleData\Setup\Patch\SimpleDataPatch; class MyDataPatch extends SimpleDataPatch { public function apply() { $this->page->save([ 'identifier' => 'foo_bar', 'title' => 'Foo bar 1', ]); } }
<?php declare(strict_types = 1); namespace MarkShust\Data\Setup\Patch\Data; use MarkShust\SimpleData\Setup\Patch\SimpleDataPatch; class PageFooBarDelete extends SimpleDataPatch { public function apply() { $this->page->delete('foo_bar'); } }
<?php namespace MarkShust\Data\Setup\Patch\Data; use MarkShust\SimpleData\Setup\Patch\SimpleDataPatch; class ConfigFooBarCreate extends SimpleDataPatch { public function apply() { $this->config->save('foo/bar', 'baz'); } }
<?php namespace MarkShust\Data\Setup\Patch\Data; use MarkShust\SimpleData\Setup\Patch\SimpleDataPatch; class ConfigFooBarDelete extends SimpleDataPatch { public function apply() { $this->config->delete('foo/bar'); } }
<?php declare(strict_types = 1); namespace MarkShust\SimpleData; use MarkShust\SimpleData\Api\Cms\SimpleBlock; class MyClass { /** @var SimpleBlock */ protected $block; /** * SimpleDataPatch constructor. * @param SimpleBlock $simpleBlock */ public function __construct( SimpleBlock $simpleBlock ) { $this->block = $simpleBlock; } /** * {@inheritdoc} */ public function execute(): void { $this->block->save([ 'identifier' => 'foo_bar', 'title' => 'Foo bar', 'content' => <<<CONTENT <div class="foo-bar"> Foo bar </div> CONTENT, ]); // Carry out other actions... } }