0

I get QA review as below:

example/module-mymodule/UiC/DataProvider.php
is too similar to the Magento 2 file
magento/module-cms/magento-module-cms-103.0.0-beta32/Ui/Component/DataProvider.php
Since this file edits public function, you can avoid duplicating code using Magento 2's plugin structure: https://devdocs.magento.com/guides/v2.3/extension-dev-guide/plugins.html or use class preferences.

Can anyone explain, what it try to say? The file which they refer is below

<?php
namespace Example\MyModule\Ui\Component;
use Magento\Framework\Api\Filter;
use Magento\Framework\Api\FilterBuilder;
use Magento\Framework\Api\Search\SearchCriteriaBuilder;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\App\RequestInterface;
use Magento\Framework\AuthorizationInterface;
use Magento\Framework\View\Element\UiComponent\DataProvider\Reporting;
/**
 * Component DataProvider
 * @api
 * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
 * @since 100.0.2
 */
class DataProvider extends \Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
{
 /**
 * @var AuthorizationInterface
 */
 private $authorization;
 /**
 * @var AddFilterInterface[]
 */
 private $additionalFilterPool;
 /**
 * @param string $name
 * @param string $primaryFieldName
 * @param string $requestFieldName
 * @param Reporting $reporting
 * @param SearchCriteriaBuilder $searchCriteriaBuilder
 * @param RequestInterface $request
 * @param FilterBuilder $filterBuilder
 * @param array $meta
 * @param array $data
 * @param array $additionalFilterPool
 * @SuppressWarnings(PHPMD.ExcessiveParameterList)
 */
 public function __construct(
 $name,
 $primaryFieldName,
 $requestFieldName,
 Reporting $reporting,
 SearchCriteriaBuilder $searchCriteriaBuilder,
 RequestInterface $request,
 FilterBuilder $filterBuilder,
 array $meta = [],
 array $data = [],
 array $additionalFilterPool = []
 ) {
 parent::__construct(
 $name,
 $primaryFieldName,
 $requestFieldName,
 $reporting,
 $searchCriteriaBuilder,
 $request,
 $filterBuilder,
 $meta,
 $data
 );
 $this->meta = array_replace_recursive($meta, $this->prepareMetadata());
 $this->additionalFilterPool = $additionalFilterPool;
 }
 /**
 * @deprecated 101.0.7
 * @return AuthorizationInterface|mixed
 */
 private function getAuthorizationInstance()
 {
 if ($this->authorization === null) {
 $this->authorization = ObjectManager::getInstance()->get(AuthorizationInterface::class);
 }
 return $this->authorization;
 }
 /**
 * Prepares Meta
 *
 * @return array
 */
 public function prepareMetadata()
 {
 $metadata = [];
 /**
 * Instead of Creating Seperate ACl access, CMS authorization is used 'Magento_Cms::save'
 */
 if (!$this->getAuthorizationInstance()->isAllowed('Magento_Cms::save')) {
 $metadata = [
 'mymodule_post_columns' => [
 'arguments' => [
 'data' => [
 'config' => [
 'editorConfig' => [
 'enabled' => false
 ]
 ]
 ]
 ]
 ]
 ];
 }
 return $metadata;
 }
 /**
 * @inheritdoc
 */
 public function addFilter(Filter $filter)
 {
 if (!empty($this->additionalFilterPool[$filter->getField()])) {
 $this->additionalFilterPool[$filter->getField()]->addFilter($this->searchCriteriaBuilder, $filter);
 } else {
 parent::addFilter($filter);
 }
 }
}
asked Aug 25, 2020 at 15:27

1 Answer 1

0

Generally, it means you don't need to add duplicate code in your module to meet up the customisation. The customisation can be done with the Magento 2 interceptor which known as Plugin. You can apply plugin concept to all the public methods of class in Magento 2. Hope this will help.

answered Aug 25, 2020 at 16:14

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.