Tabs 如何在管理产品编辑页面Magento2中创建选项卡和网格
在这里,我使用事件观察者“控制器\动作\布局\呈现\在\管理HTML \目录\产品\编辑”来呈现产品选项卡中的自定义模块网格,但不起作用 这里我创建了Grid.php文件 请帮忙Tabs 如何在管理产品编辑页面Magento2中创建选项卡和网格,tabs,grid,magento2,Tabs,Grid,Magento2,在这里,我使用事件观察者“控制器\动作\布局\呈现\在\管理HTML \目录\产品\编辑”来呈现产品选项卡中的自定义模块网格,但不起作用 这里我创建了Grid.php文件 请帮忙 我已经创建了下面的观察者文件。 app/code/Namespace/Module/Observer/AddStockMovementsTab.php 正在尝试在此文件中编写代码 app/code/Namespace/Module/Block/Adminhtml/Watch/Grid.php namespace\Mo
namespace\Module\Block\Adminhtml\Watch;
使用Magento\Framework\Registry;
使用Magento\Backend\Block\Template\Context;
使用Magento\Store\Model\Store;
使用Magento\CatalogInventory\Model\Stock\Item;
类网格扩展\Magento\Backend\Block\Widget\Grid\Extended{
受保护的$u注册表;
/**
*@var\Magento\Framework\Module\Manager
*/
受保护的$moduleManager;
/**
*@var\Magento\Eav\Model\ResourceModel\Entity\Attribute\Set\CollectionFactory]
*/
受保护的工厂;
/**
*@var\Magento\Catalog\Model\ProductFactory
*/
受保护的$\u产品工厂;
/**
*@var\Magento\Catalog\Model\Product\Type
*/
受保护的$\u类型;
/**
*@var\Magento\Catalog\Model\Product\Attribute\Source\Status
*/
受保护的$u状态;
受保护的$\u收集工厂;
/**
*@var\Magento\Catalog\Model\Product\Visibility
*/
受保护的$\u可见性;
/**
*@var\Magento\Store\Model\WebsiteFactory
*/
受保护的$\u网站工厂;
/**
*@param\Magento\Backend\Block\Template\Context$Context
*@param\Magento\Backend\Helper\Data$backendHelper
*@param\Magento\Store\Model\WebsiteFactory$WebsiteFactory
*@param\Magento\Eav\Model\ResourceModel\Entity\Attribute\Set\CollectionFactory$setsFactory
*@param\Magento\Catalog\Model\ProductFactory$ProductFactory
*@param\Magento\Catalog\Model\Product\Type$Type
*@param\Magento\Catalog\Model\Product\Attribute\Source\Status$Status
*@param\Magento\Catalog\Model\Product\Visibility$Visibility
*@param\Magento\Framework\Module\Manager$moduleManager
*@param数组$data
*
*@SuppressWarnings(PHPMD.ExcessiveParameterList)
*/
公共函数构造(
上下文$Context,
\Magento\Backend\Helper\Data$backendHelper,
\Magento\Store\Model\WebsiteFactory$WebsiteFactory,
\名称空间\Module\Model\ResourceModel\Watch\Collection$collectionFactory,
\Magento\Framework\Module\Manager$moduleManager,
注册表$注册表,
数组$data=[]
) {
$this->_collectionFactory=$collectionFactory;
$this->_websiteFactory=$websiteFactory;
$this->moduleManager=$moduleManager;
$this->_registry=$registry;
父项::_构造($context、$backendHelper、$data);
}
公共功能(构造)
{
父项::_构造();
$this->setId('StockWatchGrid');
$this->setSaveParametersInSession(true);
$this->setfiltervability(!$this->getProduct());
$this->setDefaultSort('created_at');
$this->setDefaultDir('DESC');
$this->setUseAjax(false);
}
受保护函数\u prepareCollection()
{
$objectManager=\Magento\Framework\App\objectManager::getInstance();
$collection=$this->_collectionFactory->load();
如果($this->getProduct()){
$stockItem=$objectManager->get('Magento\CatalogInventory\Api\StockRegistryInterface')->getStockItem($this->getProduct()->getId());
如果($stockItem->getId()){
$collection->addFieldToFilter('item_id',$stockItem->getId());
}
}否则{
$collection->joinProduct();
}
$this->setCollection($collection);
返回父项::_prepareCollection();
}
/**
*@return$this
*@SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
受保护函数\u prepareColumns()
{
如果(!$this->getProduct()){
$this->addColumn(
“sku”,
[
'header'=>SKU',
“索引”=>“sku”,
'过滤器索引'=>'产品.sku',
'类型'=>'文本',
'frame_callback'=>[$this'decorateSku'],
'header\u css\u class'=>'col id',
“column\u css\u class'=>“coll id”,
]
);
}
$this->addColumn(
“数量”,
[
'header'=>\'Quantity',
“索引”=>“数量”,
“类”=>“排序顺序”
]
);
$this->addColumn(
“运动”,
[
'header'=>\'Movement',
“索引”=>“移动”,
“类”=>“排序顺序”
]
);
$this->addColumn(
“是否有库存”,
[
'header'=>\'In Stock',
“索引”=>“是库存中的”,
'类型'=>'选项',
“选项”=>[
“1”=>“‘是’”,
“0”=>\uuuu(“否”),
],
“类”=>“排序顺序”
]
);
$this->addColumn(
"讯息",,
[
'header'=>\'Message',
'索引'=>'消息',
“类”=>“排序顺序”
]
);
$this->addColumn(
“用户”,
[
'header'=>\'User',
“索引”=>“用户”,
“类”=>“排序顺序”
]
);
$this->addColumn(
“创建于”,
[
'header'=>\'Date',
'索引'=>'已在'',
'类型'=>'日期时间',
“类”=>“排序顺序”
]
);
返回父项::_prepareColumns();
}
公共函数getProduct()
{
返回$this->_registry->registry('product');
}
公共函数decorateSku($value,$row)
{
$html=sprintf(
'',
$this->getUrl('catalog/product/edit',array('id'=>$row->getProductId()),uuuu('edit product'),
美元价值
);
返回$html;
}}
您能发布您到目前为止所做的工作来修复它吗?您需要根据UI组件更改自定义网格,因为magento 2使用了它。@rrd我刚刚为它创建了网格,不知道
namespace Namespace\Module\Block\Adminhtml\Watch;
use Magento\Framework\Registry;
use Magento\Backend\Block\Template\Context;
use Magento\Store\Model\Store;
use Magento\CatalogInventory\Model\Stock\Item;
class Grid extends \Magento\Backend\Block\Widget\Grid\Extended {
protected $_registry;
/**
* @var \Magento\Framework\Module\Manager
*/
protected $moduleManager;
/**
* @var \Magento\Eav\Model\ResourceModel\Entity\Attribute\Set\CollectionFactory]
*/
protected $_setsFactory;
/**
* @var \Magento\Catalog\Model\ProductFactory
*/
protected $_productFactory;
/**
* @var \Magento\Catalog\Model\Product\Type
*/
protected $_type;
/**
* @var \Magento\Catalog\Model\Product\Attribute\Source\Status
*/
protected $_status;
protected $_collectionFactory;
/**
* @var \Magento\Catalog\Model\Product\Visibility
*/
protected $_visibility;
/**
* @var \Magento\Store\Model\WebsiteFactory
*/
protected $_websiteFactory;
/**
* @param \Magento\Backend\Block\Template\Context $context
* @param \Magento\Backend\Helper\Data $backendHelper
* @param \Magento\Store\Model\WebsiteFactory $websiteFactory
* @param \Magento\Eav\Model\ResourceModel\Entity\Attribute\Set\CollectionFactory $setsFactory
* @param \Magento\Catalog\Model\ProductFactory $productFactory
* @param \Magento\Catalog\Model\Product\Type $type
* @param \Magento\Catalog\Model\Product\Attribute\Source\Status $status
* @param \Magento\Catalog\Model\Product\Visibility $visibility
* @param \Magento\Framework\Module\Manager $moduleManager
* @param array $data
*
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
*/
public function __construct(
Context $context,
\Magento\Backend\Helper\Data $backendHelper,
\Magento\Store\Model\WebsiteFactory $websiteFactory,
\Namespace\Module\Model\ResourceModel\Watch\Collection $collectionFactory,
\Magento\Framework\Module\Manager $moduleManager,
Registry $registry,
array $data = []
) {
$this->_collectionFactory = $collectionFactory;
$this->_websiteFactory = $websiteFactory;
$this->moduleManager = $moduleManager;
$this->_registry = $registry;
parent::__construct($context, $backendHelper, $data);
}
public function _construct()
{
parent::_construct();
$this->setId('StockWatchGrid');
$this->setSaveParametersInSession(true);
$this->setFilterVisibility(!$this->getProduct());
$this->setDefaultSort('created_at');
$this->setDefaultDir('DESC');
$this->setUseAjax(false);
}
protected function _prepareCollection()
{
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$collection = $this->_collectionFactory->load();
if ($this->getProduct()) {
$stockItem = $objectManager->get('Magento\CatalogInventory\Api\StockRegistryInterface')->getStockItem($this->getProduct()->getId());
if ($stockItem->getId()) {
$collection->addFieldToFilter('item_id', $stockItem->getId());
}
} else {
$collection->joinProduct();
}
$this->setCollection($collection);
return parent::_prepareCollection();
}
/**
* @return $this
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
protected function _prepareColumns()
{
if (!$this->getProduct()) {
$this->addColumn(
'sku',
[
'header' => __('SKU'),
'index' => 'sku',
'filter_index' => 'product.sku',
'type' => 'text',
'frame_callback' => [$this, 'decorateSku'],
'header_css_class' => 'col-id',
'column_css_class' => 'col-id',
]
);
}
$this->addColumn(
'qty',
[
'header' => __('Quantity'),
'index' => 'qty',
'class' => 'sort_order'
]
);
$this->addColumn(
'movement',
[
'header' => __('Movement'),
'index' => 'movement',
'class' => 'sort_order'
]
);
$this->addColumn(
'is_in_stock',
[
'header' => __('In Stock'),
'index' => 'is_in_stock',
'type' => 'options',
'options' => [
'1' => __('Yes'),
'0' => __('No'),
],
'class' => 'sort_order'
]
);
$this->addColumn(
'message',
[
'header' => __('Message'),
'index' => 'message',
'class' => 'sort_order'
]
);
$this->addColumn(
'user',
[
'header' => __('User'),
'index' => 'user',
'class' => 'sort_order'
]
);
$this->addColumn(
'created_at',
[
'header' => __('Date'),
'index' => 'created_at',
'type' => 'datetime',
'class' => 'sort_order'
]
);
return parent::_prepareColumns();
}
public function getProduct()
{
return $this->_registry->registry('product');
}
public function decorateSku($value, $row)
{
$html = sprintf(
'<a href="%s" title="%s">%s</a>',
$this->getUrl('catalog/product/edit', array('id' => $row->getProductId())), __('Edit Product'),
$value
);
return $html;
}}