Zugriff auf Daten in Extjs

Hallo zusammen, 

ich bin seit einigen Tagen aufgeschmissen… und komme nicht weiter. 
Ich möchte mir eine Packliste erstellen, diese wird aktuell auch im Backend angezeigt. Jedoch will ich diese auch ausdrucken können, jedoch finde ich keinen geeigneten Weg diese exportieren zu können. 

Gibt es von Shopware eine Funktion mit der ich daten exportieren kann? 

Ich habe die gewünschten Daten in einem Table zur Verfügung… Ich habe mich an dem Exporter package von Sencha ausprobiert… jedoch ohne Erfolg ebenfalls mit FPDF usw… 

Kann mir wer weiter helfen bitte?

Oder gibt es einen Freelance, der mir unter die Arme greifen kann… (natürlich gegen Bezahlung :slight_smile: )?

Bootstrap:

class Shopware_Plugins_Backend_Packliste_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{
    /**
     * Label for plugin.
     *
     * @return string
     */
    public function getLabel()
    {
        return 'Packliste';
    }

    /**
     * Version for plugin.
     *
     * @return string
     */
    public function getVersion()
    {
        return '1.0.00';
    }

    /**
     * Informations about plugin.
     *
     * @return array
     */
    public function getInfo()
    {
        return array(
            'version' => $this->getVersion(),
            'label' => $this->getLabel(),
            'author' => 'Sven Nagel',
            'copyright' => 'Copyright © ' . date('Y') . ', Sven Nagel'

        );
    }

    public function install()
    {
        $this->createDatabase();
        $this->subscribeEvent(
            'Enlight_Controller_Dispatcher_ControllerPath_Backend_Packliste',
            'getBackendController'
        );

        $this->createMenuItem(array(
            'label' => 'Packliste',
            'controller' => 'Packliste',
            'class' => 'sprite-application-block',
            'action' => 'Index',
            'active' => 1,
            'parent' => $this->Menu()->findOneBy(['label' => 'Kunden'])
        ));
        $this->createPdf();

        return array('success' => true, 'invalidateCache' => array('config', 'frontend', 'backend', 'proxy'));

    }

    /**
     * Remove attributes from table
     *
     * @return bool
     */
    public function uninstall()
    {
        $this->removeDatabase();

        $menuItem = $this->Menu()->findOneBy(array('label' => 'Packliste'));
        Shopware()->Models()->remove($menuItem);
        Shopware()->Models()->flush();

        return true;
    }

    public function getBackendController(Enlight_Event_EventArgs $args)
    {
        // Register the template directory to not have to provide it
        // in the controller every time
        $this->Application()->Template()->addTemplateDir(
            $this->Path() . 'Views/'
        );

        // Register the models to have access to them in the controller
        $this->registerCustomModels();

        return $this->Path() . '/Controllers/Backend/Packliste.php';
    }


    protected function registerCustomModels()
    {
        $this->Application()->Loader()->registerNamespace(
            'Shopware\Models\Packliste', $this->Path() . 'Models/'
        );
        $this->Application()->ModelAnnotations()->addPaths(
            array(
                $this->Path() . 'Models/',
            )
        );
    }


    /**
     * Creates database table based on Packlist model
     */
    private function createDatabase()
    {
        // Register namespace and annotations for custom model
        $this->registerCustomModels();
        // Create schema for custom model
        $this->executeSchemaAction('createSchema');

    }

    /**
     * Drops database table based on Packlist model
     */
    private function removeDatabase()
    {
        // Unregister namespace and annotations for custom model
        $this->registerCustomModels();
        // Remove schema for custom model
        $this->executeSchemaAction('dropSchema');
    }

    private function executeSchemaAction($action)
    {
        $em = $this->Application()->Models();
        $tool = new \Doctrine\ORM\Tools\SchemaTool($em);

        $classes = array(
            $em->getClassMetadata('Shopware\Models\Packliste\Packliste'),
        );

        try {
            $tool->$action($classes);
        } catch (\Doctrine\ORM\Tools\ToolsException $e) {
            //ignore
        }

        IF($action == 'createSchema'){
            $this->addData();

        } ELSE {

        };
    }

    protected function addData()
    {
        $sql = "
          INSERT INTO s_pack_model(id, orderId, cnumber, articleId, articleNumber, articleName, quantity, sumOrder)
            SELECT 
                s_order_details.id,
                s_order_details.orderID,
                s_order.ordernumber,
                s_order_details.articleID,
                s_order_details.articleordernumber,
                s_order_details.name,
                s_order_details.quantity,
            SUM(s_order_details.quantity) AS sumOrder
            FROM s_order_details, s_order
            WHERE s_order_details.ordernumber = s_order.ordernumber AND s_order.status='0'
            GROUP BY s_order_details.name
        ";
        Shopware()->Db()->query($sql);
    }



 protected function createPdf()
 {


 }

Controller:

class Shopware_Controllers_Backend_Packliste extends Shopware_Controllers_Backend_Application
{

    protected $model = 'Shopware\Models\Packliste\Packliste';
    protected $alias = 'Packliste';

    public function init()
    {
        $this->View()->addTemplateDir(dirname( __FILE__ ) . "/Views/");
        parent::init();
    }


}

ExtJS: -> Ich poste gerne die anderen Klassen auch. Mein Ansatz war, dass ich mir einen Button initalisiert habe der bei einem Klick die Daten exportiert.

Ext.define('Shopware.apps.Packliste.view.list.Packliste', {
    extend: 'Shopware.grid.Panel',
    alias: 'widget.product-listing-grid',
    region: 'center',

    configure: function() {
        return {
            columns: {
                articleNumber: 'Artikelnummer',
                articleName: 'Artikelname',
                sumOrder: 'Menge'
            }
        };
    },

    createToolbarItems: function() {
        var me = this,
            items = me.callParent(arguments);

        items = Ext.Array.insert(
            items,
            2,
            [me.createToolbarButton()]
        );

        return items;
    },

    createToolbarButton: function() {
        var me = this;
        return Ext.create('Ext.button.Button', {
            text: 'Druck erstellen',
            handler: function() {

                me.getContent()

            }
        });
    },

    getContent: function() {


    }
});

Vielen Dank vorab. 

Grüße,

Sven

Habe das Prob gelöst via csv Exoport.

Jetzt gibt es aber ein anderes Prob… weiß wer wie ich an meine Daten aus der mysql datenbank komme in extjs?
Es funktioniert alles korrekt, die Daten werden angezeigt usw. nur wie bekomme ich die jetzt in ein Array…?

   var data = [['name1', 'city1', 'some other info'], ['name2', 'city2', 'more info']];

Das Array data soll nun von mit den richtigen Daten gefüllt werden, kann man da auf den Store zugreifen?

Gruß,

Sven 

Hey zusammen, 

hat keiner einen Ansatz wie man Daten die bereits angezeigt werden aus dem Store in ein Array laden kann?