web-dev-qa-db-fra.com

Comment obtenir des valeurs de formulaire XML dans Joomla 2.x?

Je travaille sur un composant Joomla MVC personnalisé pour Joomla 2.x. J'ai un fichier .xml pour le type d'élément de menu personnalisé. J'ai besoin d'obtenir le champ value_field pour indiquer à la vue ce qu'il faut afficher dans la base de données. J'ai tout essayé et recherché et il semble que rien ne fonctionne pour moi.

Voici les codes:

default.xml

    <?xml version="1.0" encoding="utf-8"?>
    <metadata>
    <layout title="League select">
        <message>Selector for league view on site</message>
    </layout>
    <fields name="request">
    <fieldset name="request">
        <field name="selLeag" 
               type="sql"  
               label="Select league" 
               query="SELECT leagueName, id FROM footleague_leagues"
               key_field="id" 
               value_field="leagueName" 
               required="true"
        >

        <option value="">Select league</option>

        </field>

        <field name="selDiv" 
               type="sql"  
               label="Select division" 
               query="SELECT divisionName, id FROM footleague_divisions" 
               key_field="id" 
               value_field="divisionName" 
               required="true"
        >
            <option value="">Select division</option>

        </field>
    </fieldset>
</fields>

modèle leagueinfo.php

<?php

    defined('_JEXEC') or die('Restricted access');

    jimport('joomla.application.component.modelitem');

    class FutLigaModelLeagueInfo extends JModelItem{

    protected $msg;

    public function getMsg(){

        if(!isset($this->msg)){
            //this shows me only the ids from database but I need value_field
            $leagueid = JRequest::getVar('selLeag');
            $divisionid = JRequest::getVar('selDiv');

            //this shows me an empty array
            $data = JFactory::getApplication()->input->get('jform', array(), 'array');

        echo $leagueid;
        echo $divisionid;

        print_r($data);


    }

    return $this->msg;

    }

}

?>

Merci pour l'aide! :)

1
user8693

Vous pouvez ajouter un paramètre dans l’option de menu et obtenir le value_field. Vous ne pouvez pas y arriver directement, mais oui, vous pouvez concaténer les 2 colonnes et transmettre la valeur dans key_field dans le fichier XML et ensuite exploser dans le fichier de modèle et comme suit:

  1. default.xml:

    <layout title="League select">
       <message>Selector for league view on site</message>
    </layout>
    
    <fields name="params">
        <fieldset name="advanced">
            <field name="selLeag" type="sql" label="Select league" 
         query="SELECT leagueName, id, concat( leagueName, ':-:',id) AS leagueNameid FROM footleague_leagues"key_field="leagueNameid" value_field="leagueName" required="true">
               <option value="">Select league</option>
            </field
       </fieldset>
    </fields>
    
  2. La sortie HTML du champ xml vous donnera les options de sélection ci-dessous: Supposons ici que la ligue NFL est le leagueName et que 1 est son id

    <select id="jform_params_selLeag" name="jform[params][selLeag]" class="chzn-done">
        <option value="" selected="selected">Select League</option>
        <option value="NFL:-:1">NFL</option>
    </select>
    
  3. models/leagueinfo.php:

    $menuParam = JFactory::getApplication()->getParams();
    $selLeag = $menuParam->get('selLeag');// output: NFL:-:1
    $explode = explode(':-:',$selLeag);
    

    De cette façon, vous avez à la fois id et leagueName et vous pouvez maintenant utiliser cette valeur comme vous le souhaitez. J'espère que cela a aidé!

1
Liz.