Pregunta

Estoy tratando de implementar un módulo de administración en Magento que tenga una cuadrícula en la primera página y las redes en las pestañas mientras edito las entidades de la cuadrícula.

La cuadrícula principal funciona bien, pero las cuadrículas en las pestañas no funcionan bien.

El problema que encontré mientras depugé el código es que estoy cargando la colección en la cuadrícula con filtrado de campo, es decir, estoy filtrando la colección con el filtro que es la identificación del usuario. Hice esto porque solo necesito datos de un solo usuario de la tabla. Esto hizo todo el problema, los datos en la cuadrícula vienen correctamente, pero la función de filtrado, clasificación y búsqueda dentro de la red no funciona y devuelve una página de error no encontrado 404. Intenté eliminar el filtro de campo que agregué al obtener la colección, luego funciona bien, pero se acercan todos los datos en la tabla, que es lo contrario a mi requisito. ¿Existe alguna solución posible para esto? Aquí está la forma en que estoy tratando de hacer:

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();
} 

ACTUALIZAR:

Ha habido un desarrollo en el tema. Conocí algunos cambios que se realizarán en el código. Cambié el _prepareCollection() A lo siguiente:

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();
}

y getGridUrl() A lo siguiente:

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

Ahora no se muestra ningún error 404, pero al buscar, filtrar y clasificar no se muestran registros. Está regresando null valores. tengo subscriptiongridAction en mi controlador. La siguiente es la acción:

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

¿Alguna idea de qué podría resolver este problema?

¿Fue útil?

Solución

Mi problema está resuelto, hay un error en mi código. En el archivo de la cuadrícula, la siguiente función era incorrecta:

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

El método correcto fue:

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

Otros consejos

El error común es que olvidamos establecer la URL de la cuadrícula en la función getGridUrl() en el Grid.php. La función debe apuntar a la URL de la cuadrícula en sí.

Por ejemplo, si está accediendo a la red utilizando la URL:

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

Entonces correspondiente getGridUrl() la función será:

public function getGridUrl() {
   return $this->getUrl('*/*/user', array('_current' => true));
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top