Eigener Backend-Controller: Keine Artikel ID verfügbar...

Hey Jungs und Mädels,

ich brauche erneut eure Hilfe…

Ich habe ein Backend-Plugin entwickelt, welches einen weiteren Tab in der Artikeldetailansicht einfügt und auch soweit funktionert. Mein einziges Problem: Ich brauche in meinem Backend-Controller in der ListAction die ID des aktuell angezeigten Artikels. Leider ist diese nicht im Request enthalten. Ich weiß nicht, wie ich die ID dort hinzufüge oder einzeln abfrage.

Kann mir da jemand helfen und einmal schauen, ob ich irgendwo was übersehen/vergessen habe?

Hier mein Backend-Controller:

Request()->getParam('limit', 30);
        $offset = $this->Request()->getParam('start', 0);
        $sort = $this->Request()->getParam('sort', null);
        error_log(print_r($this->Request(), true));
        $article = $this->Request()->getParam('id', null);
        error_log("Article: " . print_r($article));

        $builder = Shopware()->Models()->createQueryBuilder();
        $builder->select('b.id, b.ktype, b.hsn, b.tsn, b.herstellerKlartext, b.handelsname, b.zuteilungsdatumTn, b.fahrzeugklasse, b.nennleistungInKW, b.maxHubraumInCM, b.maxTechnischZulassigeGesamtmasse, b.modellbezeichnung, kba.selected, kba.comment')
            ->from('SoftwKbaManager\Models\Cars', 'b')
            ->leftJoin('HzweiaKbaAddon\Models\KbaMapping', 'kba', 'WITH', 'kba.ktype = b.ktype');
//      
        if (!empty($sort)) {
          if(($sort[0]['property'] == 'selected') || ($sort[0]['property'] == 'comment')) {
            $sort[0]['property'] = 'kba.' . $sort[0]['property'];
          } else {
            $sort[0]['property'] = 'b.' . $sort[0]['property'];
          }
          $builder->addOrderBy($sort);
        }

        $builder->setFirstResult($offset)
            ->setMaxResults($limit);
// $query_result = \Doctrine\Common\Util\Debug::dump($builder->getQuery());
        $query = $builder->getQuery();
// error_log('Query: ' . $query_result);

        $query->setHydrationMode(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);
        $paginator = Shopware()->Container()->get('Models')->createPaginator($query);
        $total = $paginator->count();
      
        $data = $query->getArrayResult();
        error_log("Data: " . $data);

        // sends the out put to the view
        $this->View()->assign(array(
            'success' => true,
            'data' => $data,
            'total' => $total
        ));
    }


    /**
     * @throws Exception
     */
    public function updateListAction()
    {
        try {
            Shopware()->Models()->flush();
        } catch (\Doctrine\ORM\OptimisticLockException $e) {
            $this->View()->assign(
                array(
                    'success' => false,
                    'message' => "Fehler " . print_r($e, true)
                )
            );
        }

        $this->View()->assign(array(
            'success' => true
        ));
    }
}

 

Hab die Lösung gefunden.

Falls wer einmal das gleiche Problem hat:
Es muss im ExtJS Store die Artikelnummer als extraParam mitgegeben werden, dann ist diese als URL-Parameter enthalten und kann im Controller abgefragt werden.