Frage

Ich versuche, ein Administratormodul in Magento zu implementieren, das auf der ersten Seite ein Raster aufweist, und Gitter in den Registerkarten, während Sie die Netzeinheiten bearbeiten.

Das Hauptnetz funktioniert einwandfrei, aber die Gitter in den Laschen funktionieren nicht gut.

Das Problem, das ich beim Debuggen des Codes gefunden habe, ist, dass ich die Sammlung im Raster mit Feldfilterung lade, dh ich filtere die Sammlung mit Filter, die die Benutzer -ID ist. Ich habe dies getan, weil ich nur Daten eines einzelnen Benutzer aus der Tabelle brauche. Dies machte das gesamte Problem, die Daten im Raster sind korrekt, aber die Filter-, Sortierungs- und Suchfunktion im Gitter funktioniert nicht und gibt eine 404 nicht gefundene Fehlerseite zurück. Ich habe versucht, den Feldfilter zu entfernen, den ich beim Erhalten der Sammlung hinzugefügt habe, und dann funktioniert es einwandfrei, aber alle Daten in der Tabelle kommen, was zu meiner Anforderung entspricht. Gibt es eine mögliche Lösung dafür? Hier ist die Art und Weise, wie ich versuche zu tun:

protected function _prepareCollection() {
    $collection = Mage::getModel('merchant/subscriptions')->getCollection()->addFieldToFilter('user_id', Mage::registry('merchant_data')->getId());
    $this->setCollection($collection); //Set the collection
    return parent::_prepareCollection();
} 

AKTUALISIEREN:

Es hat eine Entwicklung in diesem Thema gegeben. Ich habe über einige Änderungen erfahren, die im Code vorgenommen werden sollen. Ich habe das geändert _prepareCollection() Zu dem Folgendem:

protected function _prepareCollection() {
    $regData = Mage::registry('merchant_data');
    if (isset($regData)) {
        $regData = $regData->getId();
    } else {
        $regData = $this->getRequest()->getParam('user_id');
    }
    $collection = Mage::getModel('merchant/subscriptions')->getCollection()->addFieldToFilter('user_id', $regData);//Getting the collection from the model. Here this is pointed to transactions table.
    $this->setCollection($collection); //Set the collection
    return parent::_prepareCollection();
}

und getGridUrl() Zu dem Folgendem:

public function getGridUrl() {
    return $this->getUrl('*/*/subscriptiongrid', array('user_id', Mage::registry('merchant_data')->getId(), '_current' => true));
}

Jetzt wird kein 404 -Fehler angezeigt, aber beim Suchen, Filtern und Sortieren keine Datensätze werden angezeigt. Es kehrt zurück null Werte. Ich habe subscriptiongridAction in meinem Controller. Im Folgenden finden Sie die Aktion:

public function subscriptiongridAction() {
    $this->loadLayout();
    $this->getResponse()->setBody(
            $this->getLayout()->createBlock('merchant/adminhtml_merchant_edit_tab_subscriptiongrid')->toHtml()
    );
}

Irgendeine Idee, was dieses Problem lösen könnte?

War es hilfreich?

Lösung

Mein Problem ist gelöst, es gibt einen Fehler in meinem Code. In der Grid -Datei war die folgende Funktion falsch:

public function getGridUrl()
{
    return $this->getUrl('*/*/subscriptiongrid', array('user_id', Mage::registry('merchant_data')->getId(), '_current' => true));
}

Die richtige Methode war:

public function getGridUrl()
{
    return $this->getUrl('*/*/subscriptiongrid', array('user_id' => Mage::registry('merchant_data')->getId(), '_current' => true));
}

Andere Tipps

Der übliche Fehler ist, dass wir vergessen, die Gitter -URL in der Funktion einzustellen getGridUrl() in dem Grid.php. Die Funktion sollte auf die Gitter -URL selbst verweisen.

Zum Beispiel, wenn Sie mit der URL auf Grid zugreifen:

http://localhost:8010/magento/index.php/manager/adminhtml_index/user/

Dann entsprechend getGridUrl() Funktion wird sein:

public function getGridUrl() {
   return $this->getUrl('*/*/user', array('_current' => true));
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top