Ich arbeite an Magento2 dynamische Massenaktion, aber ich bekomme keine dynamische Baum Massaction Teil in Reihenfolge Grid. Also referenziere ich einen Link und ich habe folgende Lösung, trotzdem bekomme ich keine gewünschte Ausgabe. Lass mich wissen, wo ich falsch liege.Magento2 dynamische massaction
<massaction name="listing_massaction">
<action name="magento_hello">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="type" xsi:type="string">magento_hello</item>
<item name="label" xsi:type="string" translate="true">change to group buyer</item>
</item>
</argument>
<argument name="actions" xsi:type="array">
<argument name="class" xsi:type="string">Magento\Hello\Ui\Component\MassAction\Group\Options</argument>
<argument name="data" xsi:type="array">
<item name="urlPath" xsi:type="string">customertobuyer/masschangetobuyer</item>
<item name="paramName" xsi:type="string">group</item>
<item name="confirm" xsi:type="array">
<item name="title" xsi:type="string" translate="true">change to group buyer</item>
<item name="message" xsi:type="string" translate="true">Are you sure to change selected customerto buyer and to assign sto new group buyer?</item>
</item>
</argument>
</argument>
</action>
</massaction>
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Hello\Ui\Component\MassAction\Group;
use Magento\Framework\UrlInterface;
use Zend\Stdlib\JsonSerializable;
use Magento\Customer\Model\ResourceModel\Group\CollectionFactory;
/**
* Class Options
*/
class Options implements JsonSerializable
{
/**
* @var array
*/
protected $options;
/**
* @var CollectionFactory
*/
protected $collectionFactory;
/**
* Additional options params
*
* @var array
*/
protected $data;
/**
* @var UrlInterface
*/
protected $urlBuilder;
/**
* Base URL for subactions
*
* @var string
*/
protected $urlPath;
/**
* Param name for subactions
*
* @var string
*/
protected $paramName;
/**
* Additional params for subactions
*
* @var array
*/
protected $additionalData = [];
/**
* Constructor
*
* @param CollectionFactory $collectionFactory
* @param UrlInterface $urlBuilder
* @param array $data
*/
public function __construct(
CollectionFactory $collectionFactory,
UrlInterface $urlBuilder,
array $data = []
) {
$this->collectionFactory = $collectionFactory;
$this->data = $data;
$this->urlBuilder = $urlBuilder;
}
/**
* Get action options
*
* @return array
*/
public function jsonSerialize()
{
if ($this->options === null) {
$options = $this->collectionFactory->create()->setRealGroupsFilter()->toOptionArray();
$this->prepareData();
foreach ($options as $optionCode) {
$this->options[$optionCode['value']] = [
'type' => 'customer_group_' . $optionCode['value'],
'label' => $optionCode['label'],
];
// if ($this->urlPath && $this->paramName) {
// $this->options[$optionCode['value']]['url'] = $this->urlBuilder->getUrl(
// $this->urlPath,
// [$this->paramName => $optionCode['value']]
// );
// }
$this->options[$optionCode['value']] = array_merge_recursive(
$this->options[$optionCode['value']],
$this->additionalData
);
}
$this->options = array_values($this->options);
}
return $this->options;
}
/**
* Prepare addition data for subactions
*
* @return void
*/
protected function prepareData()
{
foreach ($this->data as $key => $value) {
switch ($key) {
case 'urlPath':
$this->urlPath = $value;
break;
case 'paramName':
$this->paramName = $value;
break;
default:
$this->additionalData[$key] = $value;
break;
}
}
}
}