Filtro filter_condition_callback con json

Tema en 'Foro de Errores' iniciado por Robert30, 13/7/15.

  1. Robert30

    Robert30 Nuevo usuario

    1
    0
    1
    Hola a toda la comunidad; el motivo de esta consulta es porque quiero agregar un filtro de búsqueda en una columna del grid view de las ordenes en el admin panel.

    El caso es que tengo está columna "Final Customer"

    filtro_final_customer.png

    Ahora bien, como he agregado esa columna con los siguientes functions

    PHP:
    class FFV_Myadminhtml_Block_Sales_Order_Renderer_Delivery
        
    extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
    {
        public function 
    render(Varien_Object $row)
        {
            
    //load first item of the order
            
    $orderItem Mage::getResourceModel('sales/order_item_collection')
                            ->
    addFieldToFilter('order_id'$row->getId())
                            ->
    getFirstItem()
                            ;
            
    $orderItemOptions $orderItem->getProductOptions();
            
    //if product doesn't have options stop with rendering
            
    if (!array_key_exists('options'$orderItemOptions)) {
                return 
    '';
            }
            
    $orderItemOptions $orderItemOptions['options'];
            
    //if product options isn't array stop with rendering
            
    if (!is_array($orderItemOptions)) {
                return 
    '';
            }
            foreach ( 
    $orderItemOptions as $orderItemOption) {
            
    $label $orderItemOption['label'];
                if (
    $label === 'Driver\'s Name and Surname:' ||
                    
    $label === 'Nombres y Apellidos del Conductor:' ||
                    
    $label === 'Nome e cognome del conducente:' ||
                    
    $label === 'Nome e cognome del autista:' ||
                    
    $label === '1- Apellidos / Nombre(s):' ||
                    
    $label === '1- Surname / Name(s):' ||
                    
    $label === '1- Cognome / Nome(i):' ||
                    
    $label === 'Name:' ||
                    
    $label === 'Name' ||
                    
    $label === 'Nombre(s) y Apellido(s):' ||
                    
    $label === 'Apellidos / Nombre(s):' ||
                    
    $label === 'Name(s) and Surname(s):' ||
                    
    $label === 'Name and Surname:' ||
                    
    $label === 'Surname / Name(s):' ||
                    
    $label === 'Nombre:') {
                    if (
    array_key_exists('value'$orderItemOption)) {
                        return 
    $orderItemOption['value'];
                    }
                }
            }
            
    //if product options doesn't have Delivery Date custom option return void
            
    return '';
        }
    }
    En dicha función capturo el valor de que tiene los label con los nombre que necesito verificar.

    En el Grid.php los muestro de la siguiente manera...


    PHP:
    $this->addColumn('final_customer', array(
          
    'header' => Mage::helper('sales')->__('Final Customer'),
          
    'index' => 'entity_id',
          
    'type'  => 'text',
          
    'renderer'  => 'FFV_Myadminhtml_Block_Sales_Order_Renderer_Delivery',
          
    //'filter_condition_callback' => array($this, '_customerFilter'),
        
    ));

    Lo que pasa es que ahora quiero añadir una búsqueda mediante la condicion "filter_condition_callback" pero aún no he dado con el tema ya que todos los ejemplos que me aparecen en internet son con columnas sencillas y aqui tengo que extraer solo un dato de un json.

    He hecho una function que me permite optener ese dato, pero lo que no se ahora es como agregarle la condicion para que pueda ser verificada por el filter_condition_callback. Aqui está mi function.

    PHP:
    public function getFinalCustomer($orderRowData){
            
    $product_options unserialize($orderRowData['product_options']);
            
    //print_r($product_options); die();
            
    $options $product_options['options'];
            foreach (
    $options as $option){
                
    $label $option['label'];
                switch (
    $label){
                    case (
    preg_match('/(Nome e cognome del cond)|(Nome e cognome del aut)|(Surname / Name(s):)/'$label) ? true false):
                        
    $result['final_customer'] = $option['value'];
                        break;
                    case (
    preg_match('/(1- Apellidos / Nombre(s):)|(1- Surname / Name(s):)|(1- Cognome / Nome(i):)/'$label)? truefalse):
                        
    $result['final_customer'] = $option['value'];
                        break;
                    case (
    preg_match('/(Nombres y Apellidos del Con)|(Driver\'s Name and Surn)|(Nombre(s) y Apellido(s):)/'$label)? true false):
                        
    $result['final_customer'] = $option['value'];
                        break;
                    case (
    preg_match('/(Apellidos / Nombre(s):)|(Name(s) and Surname(s):)|(Name and Surname:)|(Nombre:)/'$label)? true false):
                        
    $result['final_customer'] = $option['value'];
                        break;
                }
            }
            return 
    $result;
    De esta manera yo optengo el dato que quiero.....pero no consigo hacer que funcione el filter_condition_callback


    Alguien me puede ayudar o dar alguna idea al respecto..


    Salu2 y muchas gracias
    Roberto
     
  2.  
    Comunidad Magento orgullosamente patrocinada por el hosting y vps magento de FactoriaDigital.com.
Cargando...

Compartir esta página

Cargando...