私はJoomla 2.xのカスタムJoomla MVCコンポーネントに取り組んでいます。カスタムメニュー項目タイプの.xmlファイルがあります。データベースから何を表示するかをビューに伝えるために、そこからvalue_fieldを取得する必要があります。私はすべてを試し、研究しました、そしてそれは私にとって何もうまくいかないようです。
コードは次のとおりです。
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>
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;
}
}
?>
助けてくれてありがとう! :)
メニュー項目にパラメータを追加して、value_field
。それを直接達成することはできませんが、はい、2つの列を連結してkey_field
をxmlに入れ、次にモデルファイルを次のように分解します。
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>
XmlフィールドのHTML出力では、次のようなオプションを選択できます。ここでは、NFLリーグはleagueName
で、1は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);
このようにして、id
とleagueName
の両方を取得し、必要に応じてこの値を使用できるようになります。これが役に立てば幸い!