/** * Generates a Magento 2.1 ui grid listing and support classes. * * @command magento2:generate:ui:add-column-sections * @argument listing_file Which Listing File? [] * @argument column_name Column Name? [ids] * @argument index_field Index Field/Primary Key? [entity_id] */ function pestle_cli($argv) { $xml = simplexml_load_file($argv['listing_file']); validateAsListing($xml); $columns = getOrCreateColumnsNode($xml); $sectionsColumn = $columns->addChild('selectionsColumn'); $sectionsColumn->addAttribute('name', $argv['column_name']); $argument = addArgument($sectionsColumn, 'data', 'array'); $configItem = addItem($argument, 'config', 'array'); $indexField = addItem($configItem, 'indexField', 'string', $argv['index_field']); writeStringToFile($argv['listing_file'], formatXmlString($xml->asXml())); }
/** * Generates a Magento 2.1 ui grid listing and support classes. * * @command magento2:generate:ui:add-column-actions * @argument listing_file Which Listing File? [] * @argument index_field Index Field/Primary Key? [entity_id] */ function pestle_cli($argv) { $xml = simplexml_load_file($argv['listing_file']); validateAsListing($xml); $actionsClass = generatePageActionsClassFromListingXmlFileAndXml($argv['listing_file'], $xml); $columns = getOrCreateColumnsNode($xml); $actionsColumn = $columns->addChild('actionsColumn'); $actionsColumn->addAttribute('name', 'actions'); $actionsColumn->addAttribute('class', $actionsClass); $argument = addArgument($actionsColumn, 'data', 'array'); $configItem = addItem($argument, 'config', 'array'); $indexField = addItem($configItem, 'indexField', 'string', $argv['index_field']); output(formatXmlString($xml->asXml())); // <actionsColumn name="actions" class="Pulsestorm\ToDoCrud\Ui\Component\Listing\Column\Pulsestormtodolisting\PageActions"> // <argument name="data" xsi:type="array"> // <item name="config" xsi:type="array"> // <item name="resizeEnabled" xsi:type="boolean">false</item> // <item name="resizeDefaultWidth" xsi:type="string">107</item> // <item name="indexField" xsi:type="string">pulsestorm_todocrud_todoitem_id</item> // </item> // </argument> // </actionsColumn> }
function generateDiXml($module_info) { $path_di = $module_info->folder . '/etc/adminhtml/di.xml'; if (!file_exists($path_di)) { $xml = simplexml_load_string(getBlankXml('di')); writeStringToFile($path_di, $xml->asXml()); output("Created new {$path_di}"); } $xml = simplexml_load_file($path_di); $item = simpleXmlAddNodesXpath($xml, 'type[@name=Magento\\Framework\\View\\Element\\UiComponent\\DataProvider\\CollectionFactory]/' . 'arguments/argument[@name=collections,@xsi:type=array]/' . 'item[@name=pulsestorm_commercebug_log_data_source,@xsi:type=string]'); $item[0] = 'Pulsestorm\\Commercebug\\Model\\ResourceModel\\Log\\Grid\\Collection'; $virtualType = addVirtualType($xml, 'Pulsestorm\\Commercebug\\Model\\ResourceModel\\Log\\Grid\\Collection', 'Magento\\Framework\\View\\Element\\UiComponent\\DataProvider\\SearchResult'); $arguments = $virtualType->addChild('arguments'); $argument = addArgument($arguments, 'mainTable', 'string', 'pulsestorm_commercebug_log'); $argument = addArgument($arguments, 'resourceModel', 'string', 'Pulsestorm\\Commercebug\\Model\\ResourceModel\\Log'); return $xml; }