How can i create button on Product listing page in admin menu.
Magento – Create custom button on catalog > product page in admin panel
magento2
Related Solutions
Create a file in Vendorname\Module\Block\Adminhtml\CustomButtom.php
<?php
namespace Vendorname\Module\Block\Adminhtml\Buttom;
use \Magento\Backend\Block\Widget\Context;
use \Magento\Backend\Model\UrlInterface;
class CustomButtom extends \Magento\Backend\Block\Widget\Container {
protected $_backendUrl;
/**
* @param \Magento\Backend\Block\Widget\Context $context
* @param array $data
*/
public function __construct(
Context $context,
UrlInterface $backendUrl,
array $data = []
) {
$this->_backendUrl = $backendUrl;
parent::__construct($context, $data);
}
/**
* Block constructor adds buttons
*
*/
protected function _construct() {
$this->addButton(
'import_ref',
$this->getButtonData()
);
parent::_construct();
}
/**
* Return button attributes array
*/
public function getButtonData() {
$url = $this->_backendUrl->getUrl("module/page/index");
return [
'label' => __('Custom buttom label'),
'on_click' => 'setLocation("'.$url.'")',
'class' => 'primary'
];
}
}
In your layout just need to add the buttom
Vendorname\Module\view\adminhtml\layout\name-layout.xml
<block class="Vendorname\Module\Block\Adminhtml\Status\CustomButtom" name="CustomButtom"/>
Add Following code in app/code/Vendor/Module/view/adminhtml/ui_component/category_form.xml
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<settings>
<buttons>
<button name="openModel" class="Vendor\Module\Block\Adminhtml\Category\Edit\AddModelButton"/>
</buttons>
</settings>
<modal name="test_model">
<settings>
<options>
<option name="buttons" xsi:type="array">
<item name="0" xsi:type="array">
<item name="text" xsi:type="string">Done</item>
<item name="class" xsi:type="string">action-primary</item>
<item name="actions" xsi:type="array">
<item name="0" xsi:type="array">
<item name="targetName" xsi:type="string">${ $.name }</item>
<item name="actionName" xsi:type="string">actionDone</item>
</item>
</item>
</item>
</option>
<option name="title" xsi:type="string">CUSTOM MODEL</option>
</options>
<onCancel>actionDone</onCancel>
</settings>
<fieldset name="general" sortOrder="10">
<settings>
<label/>
</settings>
<field name="test1" sortOrder="10" formElement="input">
<settings>
<dataType>text</dataType>
<label translate="true">Test 1</label>
<dataScope>test1</dataScope>
<validation>
<rule name="required-entry" xsi:type="boolean">true</rule>
</validation>
</settings>
</field>
<field name="test2" sortOrder="20" formElement="textarea">
<settings>
<label translate="true">Test 2</label>
<dataType>text</dataType>
<dataScope>test2</dataScope>
</settings>
</field>
</fieldset>
</modal>
</form>
Add following code in app/code/Vendor/Module/Block/Adminhtml/Category/Edit/AddModelButton.php
<?php
namespace Vendor\Module\Block\Adminhtml\Category\Edit;
use Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface;
use Magento\Catalog\Block\Adminhtml\Category\AbstractCategory;
class AddModelButton extends AbstractCategory implements ButtonProviderInterface
{
public function getButtonData()
{
return [
'label' => __('Open Model'),
'class' => 'action-secondary',
'data_attribute' => [
'mage-init' => [
'Magento_Ui/js/form/button-adapter' => [
'actions' => [
[
'targetName' => 'category_form.category_form.test_model',
'actionName' => 'toggleModal'
]
]
]
]
],
'on_click' => '',
'sort_order' => 20
];
}
}
you will get what you looking for :D
Best Answer
The product form is generated via ui-components. The ui component name for product form is view/adminhtml/ui_component/product_form.xml.
You need to create a file with the same name and path in your own module with the following content:
Then create the class
Your Button will display in your product form.