Beispiel #1
0
/**
* Generates Magento 2 Observer
* This command generates the necessary files and configuration to add 
* an event observer to a Magento 2 system.
*
*    pestle.phar generate_observer Pulsestorm_Generate controller_action_predispatch pulsestorm_generate_listener3 'Pulsestorm\Generate\Model\Observer3'
*
* @command generate_observer
* @argument module Full Module Name? [Pulsestorm_Generate]
* @argument event_name Event Name? [controller_action_predispatch]
* @argument observer_name Observer Name? [<$module$>_listener]
* @argument model_name Class Name? [<$module$>\Model\Observer]
*/
function pestle_cli($argv)
{
    $module = $argv['module'];
    $event_name = $argv['event_name'];
    $observer_name = $argv['observer_name'];
    $model_name = $argv['model_name'];
    $method_name = 'execute';
    $path_xml_event = initilizeModuleConfig($module, 'events.xml', 'urn:magento:framework:Event/etc/events.xsd');
    $xml = simplexml_load_file($path_xml_event);
    $nodes = $xml->xpath('//event[@name="' . $event_name . '"]');
    $node = array_shift($nodes);
    $event = $node;
    if (!$node) {
        $event = $node ? $node : $xml->addChild('event');
        $event->addAttribute('name', $event_name);
    }
    $observer = $event->addChild('observer');
    $observer->addAttribute('name', $observer_name);
    $observer->addAttribute('instance', $model_name);
    // $observer->addAttribute('method',   $method_name);
    output("Creating: {$path_xml_event}");
    $path = writeStringToFile($path_xml_event, $xml->asXml());
    output("Creating: {$model_name}");
    $contents = createClassTemplate($model_name, false, '\\Magento\\Framework\\Event\\ObserverInterface');
    $contents = str_replace('<$body$>', "\n" . '    public function execute(\\Magento\\Framework\\Event\\Observer $observer){exit(__FILE__);}' . "\n", $contents);
    createClassFile($model_name, $contents);
}
Beispiel #2
0
/**
* Generates Magento 2 Observer
* This command generates the necessary files and configuration to add 
* an event observer to a Magento 2 system.
*
*    pestle.phar generate_observer Pulsestorm_Generate controller_action_predispatch pulsestorm_generate_listener3 'Pulsestorm\Generate\Model\Observer3'
*
* @command generate_observer
* @argument module Full Module Name? [Pulsestorm_Generate]
* @argument event_name Event Name? [controller_action_predispatch]
* @argument observer_name Observer Name? [<$module$>_listener]
* @argument model_name Class Name? [<$module$>\Model\Observer]
*/
function pestle_cli($argv)
{
    //     $module = input("Full Module Name?", 'Pulsestorm_Helloworld');
    //     $event_name     = input('Event Name?', 'controller_action_predispatch');
    //     $observer_name  = input('Observer Name?', strToLower($module . '_listener'));
    //     $model_name     = input('Class Name?', str_replace('_', '\\', $module) . '\\Model\\Observer');
    //     $method_name    = input('Method Name?', 'myMethodName');
    $module = $argv['module'];
    $event_name = $argv['event_name'];
    $observer_name = $argv['observer_name'];
    $model_name = $argv['model_name'];
    $method_name = 'execute';
    $path_xml_event = initilizeModuleConfig($module, 'events.xml', '../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd');
    $xml = simplexml_load_file($path_xml_event);
    $nodes = $xml->xpath('//event[@name="' . $event_name . '"]');
    $node = array_shift($nodes);
    $event = $node;
    if (!$node) {
        $event = $node ? $node : $xml->addChild('event');
        $event->addAttribute('name', $event_name);
    }
    $observer = $event->addChild('observer');
    $observer->addAttribute('name', $observer_name);
    $observer->addAttribute('instance', $model_name);
    // $observer->addAttribute('method',   $method_name);
    output("Creating: {$path_xml_event}");
    $path = writeStringToFile($path_xml_event, $xml->asXml());
    output("Creating: {$model_name}");
    $contents = createClassTemplate($model_name, false, '\\Magento\\Framework\\Event\\ObserverInterface');
    $contents = str_replace('<$body$>', "\n" . '    public function execute(\\Magento\\Framework\\Event\\Observer $observer){exit(__FILE__);}' . "\n", $contents);
    // $contents = createBasicClassContents($model_name, $method_name);
    createClassFile($model_name, $contents);
}
Beispiel #3
0
function createBlockClass($module_info, $block_name)
{
    $class_name = str_replace('_', '\\', $module_info->name) . '\\Block\\' . ucwords($block_name);
    output("Creating: " . $class_name);
    $contents = createClassTemplate($class_name, '\\Magento\\Framework\\View\\Element\\Template');
    $contents = str_replace('<$body$>', "\n" . '    function _prepareLayout(){}' . "\n", $contents);
    createClassFile($class_name, $contents);
    return $class_name;
}
Beispiel #4
0
function createBlockClass($module_info, $block_name, $area = 'frontname')
{
    $class_name = str_replace('_', '\\', $module_info->name) . '\\Block\\';
    if ($area === 'adminhtml') {
        $class_name .= 'Adminhtml\\';
    }
    $class_name .= ucwords($block_name);
    output("Creating: " . $class_name);
    $baseClass = '\\Magento\\Framework\\View\\Element\\Template';
    if ($area === 'adminhtml') {
        $baseClass = '\\Magento\\Backend\\Block\\Template';
    }
    $contents = createClassTemplate($class_name, $baseClass);
    $contents = str_replace('<$body$>', "\n" . '    function _prepareLayout(){}' . "\n", $contents);
    createClassFile($class_name, $contents);
    return $class_name;
}
Beispiel #5
0
function generateDataProviderClass($moduleInfo, $gridId, $collectionFactory)
{
    $providerClass = generateProdiverClassFromGridIdAndModuleInfo($gridId, $moduleInfo);
    $collectionFactory = '\\' . trim($collectionFactory, '\\');
    $constructor = '    
    public function __construct(
        $name,
        $primaryFieldName,
        $requestFieldName,
        ' . $collectionFactory . ' $collectionFactory,
        array $meta = [],
        array $data = []
    ) {
        parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
        $this->collection = $collectionFactory->create();
    }' . "\n";
    $contents = createClassTemplateWithUse($providerClass, '\\Magento\\Ui\\DataProvider\\AbstractDataProvider');
    $contents = str_replace('<$use$>', '', $contents);
    $contents = str_replace('<$body$>', $constructor, $contents);
    output("Creating: {$providerClass}");
    $return = createClassFile($providerClass, $contents);
    return $contents;
}