Cách hiển thị Danh mục trong System.xml trong magento 2


7

Tôi đang nhận được tất cả các loại trong System.xmlviệc sử dụng lớp

Vender\Module\Model\Config\Source\Category

<?php
namespace Vender\Module\Model\Config\Source;

use Magento\Framework\Data\OptionSourceInterface;

class Category implements OptionSourceInterface{

    protected $_categoryFactory;
    protected $_categoryCollectionFactory;

    public function __construct(
        \Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $categoryCollectionFactory,
        \Magento\Catalog\Model\CategoryFactory $categoryFactory
    ) {
        $this->_categoryCollectionFactory = $categoryCollectionFactory;
        $this->_categoryFactory = $categoryFactory;
    }

    /**
    * Get category collection
    *
    * @param bool $isActive
    * @param bool|int $level
    * @param bool|string $sortBy
    * @param bool|int $pageSize
    * @return \Magento\Catalog\Model\ResourceModel\Category\Collection or array
    */


    public function getAllCategoryCollection($isActive = true, $level = false, $sortBy = false, $pageSize = false)
    {
        $collection = $this->_categoryCollectionFactory->create();
        $collection->addAttributeToSelect('*');

        // select only active categories
        if ($isActive) {
            $collection->addIsActiveFilter();
        }

        // select categories of certain level
        if ($level) {
            $collection->addLevelFilter($level);
        }

        // sort categories by some value
        if ($sortBy) {
            $collection->addOrderField($sortBy);
        }

        // select certain number of categories
        if ($pageSize) {
            $collection->setPageSize($pageSize);
        }

        return $collection;
    }



    public function toOptionArray(){

        $arr = $this->_toCheckArray();
        $ret = [];
        foreach ($arr as $key => $value){
            $ret[] = [
                'value' => $key,
                'label' => $value
            ];
        }    
        return $ret;
    } 

    private function _toCheckArray(){

        $categories = $this->getAllCategoryCollection(true, false, false, false);
        $catagoryList = array();
        foreach ($categories as $category){
           $catagoryList[$category->getEntityId()] = __($this->_getCategoryParentName($category->getPath()) . $category->getName());
        }
        return $catagoryList;
    }



    private function _getCategoryParentName($path = ''){
        $parentName = '';
        $rootCats = array(1,2);  
        $catTree = explode("/", $path);
        array_pop($catTree);     
        if($catTree && (count($catTree) > count($rootCats))){
            foreach ($catTree as $catId){
                if(!in_array($catId, $rootCats)){
                    $category = $this->_categoryFactory->create()->load($catId);
                    $categoryName = $category->getName();
                    $parentName .= $categoryName . ' -> ';
                }
            }
        }
        return $parentName;
    }
}

Tôi nhận được mẫu lớp này Magento 2 - Danh sách danh mục cho phần cấu hình hệ thống magento tùy chỉnh
Bây giờ nó hoạt động hoàn hảo với tôi và đầu ra của nó giống như nhập mô tả hình ảnh ở đây Nhưng khi tôi gửi mô-đun của mình cho Magento QA, họ gửi cho tôi Lỗi Bây giờ tôi có thể giải quyết vấn đề này như thế nào? để xác định vấn đềnhập mô tả hình ảnh ở đây

Lưu ý: Tôi đã gửi Phần mở rộng này trước đây bằng cách thay đổi Tên của Lớp Tôi nghĩ rằng đó sẽ là vấn đề vì tên Lớp hoặc tên Phương thức Tôi đã thay đổi tất cả tên phương thức và tên lớp nhưng một lần nữa chúng lại gửi cho tôi cùng một vấn đề.


Tiện ích mở rộng của bạn bị từ chối do mã trùng lặp hoặc bạn sử dụng chức năng công khai thay vì chức năng riêng tư. xem mô-đun này sẽ giúp bạn xóa mã trùng lặp github.com/mconnectmedia/ từ
Chirag Patel

@ChiragPatel nó không hoạt động ... Đáp lại, nó cho tôi "Không tìm thấy mã trùng lặp trong mã của bạn"
Asad Khan

Nếu bạn không nhận được bất kỳ lỗi nào hoặc không rõ ràng về sự từ chối của bạn thì bạn có thể gửi email đến địa điểm thị trường magento. tôi đã đề cập đến email trong có thể trả lời
Chirag Patel

Vâng, tôi đã gửi cho họ một Email nhưng họ không cho tôi bất kỳ phản hồi nào
Asad Khan

Câu trả lời:


3

Để giải quyết vấn đề của bạn, hãy làm theo bước dưới đây:

  1. Hướng dẫn đánh giá kỹ thuật
  2. Bạn có thể gửi email đến marketplace@magento.com với bất kỳ vấn đề nào về việc gửi Marketplace. Họ sẽ có thể giúp bạn.
  3. marketplacesupport.magento.com Từ đây bạn có thể tạo một vé hỗ trợ để đặt câu hỏi của bạn và bạn cũng sẽ tìm thấy thêm Thông tin về Magento Marketplace.
  4. Đây là một vài điều tôi tìm thấy có thể giúp giảm từ chối và vượt qua quá trình EQP.

Thực hiện theo các bước trên nó có thể được giải quyết vấn đề của bạn.

Tôi hy vọng nó sẽ giúp! Cảm ơn.


0

Tôi nghĩ điều đó đang xảy ra bởi vì có mã đã làm điều đó. Kiểm tra:vendor/magento/module-catalog/Ui/Component/Product/Form/Categories/Options.php


1
vâng tôi nhận được tất cả các danh mục trong lớp này nhưng khi tôi cố gắng hiển thị tất cả các danh mục trong cấu hình (system.xml) thì nó chỉ hiển thị cho tôi danh mục mặc định. Làm cách nào tôi có thể hiển thị tất cả các danh mục khi system.xmlsử dụng lớp này
Asad Khan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.