⚠ In case you've missed it, we have migrated to our new website, with a brand new forum. For more details about the migration you can read our blog post for website migration. This is an archived forum. ⚠

  •     

profile picture

Dependent dropdown (library) not work for me



Victor Castillo
  • profile picture
  • Member

Posted 13 April 2016 - 17:10 PM

When I made selection in a "Parent" dropdown the library dont refreshes a "child" dropdown. It is a disabled. gc_dependent_select.php 

 

also I tried kadabra's code, child dropdown shows all the registers.

 

Help Please, now my code:

 

function listar_vehiculos()
  {
    try{
        
    /* Creamos el objeto */
    $crud = new grocery_CRUD();
     date_default_timezone_set('America/Caracas');
    /* Seleccionamos el tema */
    
    $crud->set_theme('flexigrid');
    /* Seleccionmos el nombre de la tabla de nuestra base de datos*/
    $crud->set_table('vehiculo');
 
    /* Le asignamos un nombre */
    $crud->set_subject('Datos');
 
    /* Asignamos el idioma español */
    $crud->set_language('spanish');
          
   /*Tabla relacionadas*/
     $crud->set_relation('idmarca','veh_marca','marca');
     $crud->set_relation('idmodelo','veh_modelo','modelos');
     $crud->set_relation('idtipo','veh_tipo','tipo');
     $crud->set_relation('idubicacion','veh_ubicacion','ubicacion');
     $crud->set_relation('idasignada','veh_asignada','asignada');
     $crud->set_relation('idsistema','veh_sistema','sistema');
     $crud->set_relation('idempresa','empresa','nombre',array('estatus' => '1'));
    
    $this->load->library('gc_dependent_select');
    // settings
    $fields = array(
    // first field:
    'idmarca' => array( // first dropdown name
    'table_name' => 'veh_marca', // table of country
    'title' => 'marca', // country title
    'relate' => null // the first dropdown hasn't a relation
    ),
    // second field
    'idmodelo' => array( // second dropdown name
    'table_name' => 'veh_modelo', // table of state
    'title' => 'modelos', // state title
    'id_field' => 'idmodelo', // table of state: primary key
    'relate' => 'idmarca', // table of state:
    'data-placeholder' => 'Selecciona Modelo' //dropdown's data-placeholder:
    ));

    $config = array(
    'main_table' => 'vehiculo',
    'main_table_primary' => 'idvehiculo',
    "url" => site_url().'/vehiculos/datos_vehiculo/get_states',
    'ajax_loader' => base_url().'ajax-loader.gif', // path to ajax-loader image. It's an optional parameter
    'segment_name' =>'get_items' //It's an optional parameter. by default "get_items"
    );
    $categories = new gc_dependent_select($crud, $fields, $config);

      
    /* Aqui le decimos a grocery que estos campos son obligatorios */
    $crud->required_fields('unidad', 'fechaadquisicion','idmarca','idmodelo','serialmotor','serialcarroceria','ano','capacidad',
                            'idtipo', 'color','idubicacion','idasignada','idempresa');
 
    /* Aqui le indicamos que campos deseamos mostrar */
    $crud->columns('unidad', 'placa','fechaadquisicion','idmodelo');
    
    $crud -> field_type ( 'estatus', 'dropdown',
             array ( '1' => 'Operativa', '2' => 'No Operativa','3' => 'En Mantenimiento','4' => 'Desincorporado','5' => 'Perdida Total','6' => 'Robado/Desaparecido'));
    
    $crud -> field_type ( 'disponibilidad', 'dropdown',
             array ( '1' => 'Está Disponible', '2' => 'No Está Disponible'));
    
    $crud -> field_type ( 'observacioninicial', 'text');
    
    /*SE UTILIZA ESTA SENTENCIA PARA SOLO INSERTAR LOS CAMPOS QUE DESEAMOS*/
    $crud->add_fields('unidad', 'placa','fechaadquisicion','idmarca','idmodelo','serialmotor','serialcarroceria','chasis','ano','capacidad',
                       'idtipo', 'color','disponible','idubicacion','idasignada','idsistema','kmactual','idempresa',
                       'estatus','observacioninicial');
    
    /*SE UTILIZA ESTA SENTENCIA PARA SOLO EDITAR LOS CAMPOS QUE DESEAMOS*/
   $crud->edit_fields('unidad', 'placa','fechaadquisicion','idmarca','idmodelo','serialmotor','serialcarroceria','chasis','ano','capacidad',
                       'idtipo', 'color','disponible','idubicacion','idasignada','idsistema','kmactual','idempresa',
                       'estatus','observacioninicial');
    
 // the second method:
$js = $categories->get_js();
$output = $crud->render();
$output->output.= $js;
     //DEPENDENT DROPDOWN SETUP
            /*$dd_data = array(
                //GET THE STATE OF THE CURRENT PAGE - E.G LIST | ADD
                'dd_state' =>  $crud->getState(),
                //SETUP YOUR DROPDOWNS
                //Parent field item always listed first in array, in this case countryID
                //Child field items need to follow in order, e.g stateID then cityID
                'dd_dropdowns' => array('idmarca','idmodelo'),
                //SETUP URL POST FOR EACH CHILD
                //List in order as per above
                'dd_url' => array('',site_url().'/vehiculos/datos_vehiculo/get_states/'),
                //LOADER THAT GETS DISPLAYED NEXT TO THE PARENT DROPDOWN WHILE THE CHILD LOADS
                'dd_ajax_loader' => base_url().'ajax-loader.gif'
            );
            $output->dropdown_setup = $dd_data;*/
                  
   
   //AQUI PARA QUE CARGUE EL MENU SI ESTOY LOGUEADO
    if($this->session->userdata('is_logged_in')){

        $this->load->model('menu/menu_model');
        $data['menu_parents']=$this->menu_model->get_parents_by_perfil($this->session->userdata('grupo')); //envia la opciones de menu
        foreach($data['menu_parents'] as $parent)
             {
                 $data['menu_childs']=$this->menu_model->get_childs_by_perfil($parent['id_modulo']); //envia los datos de los submenus
             }          
    }
         
   $output = array_merge( (array)$output, $data);
   
   /* La cargamos en la vista situada en /applications/views/vehiculos/modelos.php */
    $this->load->view('vehiculos/datos_vehiculo', $output);
     
    }catch(Exception $e){
      /* Si algo sale mal cachamos el error y lo mostramos */
      show_error($e->getMessage().' --- '.$e->getTraceAsString());
    }
  }
            
        //GET JSON OF STATES
    function get_states()
    {
        
        $idmarca = $this->uri->segment(3);
        $this->db->select("*")
                 ->from('veh_modelo')
                 ->where('idmarca', $idmarca);
        $db = $this->db->get();
        
        $array = array();
        foreach($db->result() as $row):
            $array[] = array("value" => $row->idmodelo, "property" => $row->modelos);
        endforeach;
        
        echo json_encode($array);
        exit;
    }