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! :)
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:
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>
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>
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é!