Forums

  • LaocheXe
    Posts: 2
    Joined: 3 years ago
      
    Based off of: https://www.e107sk.com/documentation/admin-ui-stuff/?cat.110#multicheckbox-field


    Code Used:
    [sp]
    public function init()
    {
    $sql = e107::getDB();
    $qualQry = "SELECT qual_id,qual_name FROM `#qualifications_sys`";

    $numQry = $sql->gen($qualQry);
    while($qua=$sql->fetch())
    {
    $qualy_ID = $qua['qual_id'];
    $qualy_Name = $qua['qual_name'];

    //$qualArray .= $qualy_ID." => ".$qualy_Name.",";
    $qual_RenderTypes = array(
    $qualy_ID => $qualy_Name,
    );
    }

    print_a($this->$qual_RenderTypes);
    // WIP
    $this->fields['qual_id']['writeParms']['optArray'] = $this->$qual_RenderTypes;
    $this->fields['qual_id']['writeParms']['multiple'] = 1;
    };
    [/sp]

    Basically service record area of the plugin I am working on (for a type of clan/roster system) - got a section to give users qualifications - so the dropdown multicheck list will display the Qualifications, and assign each one to the selected user. However, when editing a user in the service records, it's a regular dro down list,, that only shows number 1.

    Inline edit is true, but it displays nothing to edit on the list of current users in the service records.

    This is the plugin: https://github.com/LaocheXe/RSystems/tree/master/roster

    Right now the qualifications have been set in another db table - but want to get rid of that - tried setting up this same method last year but ran into the issue of hard coded userclasses tree.
  • Jimako
    Main Admin
    Posts: 356
    Joined: 1 year ago
    Fri Sep 06 2019, 10:17P.M.  Jimako
    It's hard without data.

    If you debug dropdown field, you should do this:

    1. try it with hardcoded list of options
    for example:

    $this->fields['qual_id']['writeParms']['optArray'] = array('element_setting_0','element_setting_1', 'element_setting_2');

    if everything works, then you can try normal dropdown from database.

    2. replace by data from database
    $rows = e107::getDB()->retrieve("qualifications_sys", "*", true, true);
          foreach($rows as $qua) {
            $this->qualsys[$qua['qual_id']] = $qua['qual_name'];
          }
    			$this->fields['qual_id']['writeParms']['optArray']  = $this->qualsys;

    And only if everything works, add multicheck

    3. add multicheck

    'writeParms' => array('multiple'=> 1 ),

    Not tested readmode without data.
  • LaocheXe
    Posts: 2
    Joined: 3 years ago
      
    Thanks, that worked. Must have been my array/query