web-dev-qa-db-ja.com

Joomla 2.xでXMLフォームの値を取得する方法

私は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;

    }

}

?>

助けてくれてありがとう! :)

1
user8693

メニュー項目にパラメータを追加して、value_field。それを直接達成することはできませんが、はい、2つの列を連結してkey_fieldをxmlに入れ、次にモデルファイルを次のように分解します。

  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. 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>
    
  3. models/leagueinfo.php:

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

    このようにして、idleagueNameの両方を取得し、必要に応じてこの値を使用できるようになります。これが役に立てば幸い!

1
Liz.