X

Как передать параметры фильтрации в grid админке через url в Magento

Для того чтобы передать значения параметра фильтра в админке magento, его необходимо правильно сформировать..

Перейдите на страницу содержащую грид, введите значение в поле фильтра, и нажмите [Search]. Теперь обратите внимание на url, он будет вида:

http://site.com/index.php/back-office/device/index/filter/ZHVlX2RhdGUlNUJsb2NhbGUlNUQ9ZW5fVVMmbGFzdF9kdWVfZGF0ZSU1QnRvJTVEPWFiYyZsYXN0X2R1ZV9kYXRlJTVCbG9jYWxlJTVEPWVuX1VT/form_key/XCvgOe14snFgYPg6/

Обратите внимание на выделенную часть. Тут наши параметры и есть. Для того, чтобы расшифровать их, скопируйте эту часть:

ZHVlX2RhdGUlNUJsb2NhbGUlNUQ9ZW5fVVMmbGFzdF9kdWVfZGF0ZSU1QnRvJTVEPWFiYyZsYXN0X2R1ZV9kYXRlJTVCbG9jYWxlJTVEPWVuX1VT

и обработайте её с помощью функции base64_decode, так же можете сделать это на сайте: https://www.base64decode.org

в результате мы получаем вот такие данные:

due_date%5Blocale%5D=en_US&last_due_date%5Bto%5D=abc&last_due_date%5Blocale%5D=en_US

как видите, уже лучше, осталось применить функцию urldecode, так же это можно сделать на этом сайте: http://www.url-encode-decode.com

в итоге получаем параметры:

due_date[locale]=en_US&last_due_date[to]=abc&last_due_date[locale]=en_US

или для удобства так:

due_date[locale]=en_US &
last_due_date[to]=abc &
last_due_date[locale]=en_US

собственно, теперь уже понятно – чтобы отправить данные в фильтр, нам надо указать само поле и локаль, после чего выполнить обратные операции.

Например, мы можем сформировать ссылку в темплейте, вот так:

<a href="<?php echo $this->getUrl('*/device/', array(
        'filter' => base64_encode( http_build_query ( array(
            'last_due_date[to]' => Mage::app()->getLocale()->date()->toString(
                                        Mage::app()->getLocale()->getDateFormat(
                                            Mage_Core_Model_Locale::FORMAT_TYPE_SHORT
                                        )
            ),
            'last_due_date[locale]' => Mage::app()->getLocale()->getLocaleCode(), 
        ))
))); ?>"><?php echo $this->__('See Devices');?></a>

Вот и все на сегодня

Категории: Magento