web-dev-qa-db-ja.com

ネストされたサブフォームでサブフォームを使用する方法

ネストされたXMLファイルでShowonを使用し、元のXMLファイルのフィールド名を参照したい。

これはJoomlaでは不可能だと私は読んだ!サブフォームに同じフィールド名を作成する場合、どれを選択するのですか? (私は個人的に最も近いもの、つまり現在のxmlにあるものに投票します)。

とにかくこれは不可能です別の方法がありますか?

これが私のファイルです

メインサブフォーム

<?xml version="1.0" encoding="UTF-8"?>
<form>
  <fieldset name="image-fieldset">
    <field name="media_manager_or_url"
          type="list"
          label="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_MEDIA_MANAGER_OR_URL_LABEL"
          description="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_MEDIA_MANAGER_OR_URL_DESCRIPTION"
          default="0"
          >
            <option value="0">MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_MEDIA_MANAGER</option>
            <option value="1">URL</option>
    </field>
    <field name="images-subform"
            label= "MOD_KOU_BACKGROUND_IMAGE_WITH_IMAGES_SUBFORM_LABEL"             
            description= "MOD_KOU_BACKGROUND_IMAGE_WITH_IMAGES_SUBFORM_DESCRIPTION"
            type= "subform"
            min= "1"
            max= "1000"
            required= "true"
            formsource= "/modules/mod_kou_background_image_with_text/xml/media_manager_or_url.xml"
            multiple= "true"
            buttons= "add,remove"
            layout="joomla.form.field.subform.repeatable"
            groupByFieldset="false"
  />        
  </fieldset>
</form>

セカンダリサブフォーム

<?xml version="1.0" encoding="UTF-8"?>
<form>
  <fieldset name="media-manager-or-url-fieldset">
    <field name="image"
          type="media"
          label="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_IMAGE_LABEL"
          description="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_IMAGE_DESCRIPTION"
          showon="media_manager_or_url:0"
          />       
    <field  name="url"
            type="url"
            label="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_URL_LABEL"
            description="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_URL_DESCRIPTION"
            showon="media_manager_or_url:1"            
    />
    <field  name="real-size"
            type="text"
            label="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_REAL_SIZE_LABEL"
            description="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_REAL_SIZE_DESCRIPTION"            
    />
    <field  name="size"
            type="text"
            label="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_SIZE_LABEL"
            description="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_SIZE_DESCRIPTION"            
    />               
  </fieldset>
</form>
2
Eoin

ファイルを複数のサブフォームに分割することで、showonを使用できます。これが私が最終的に得たものです。

メインサブフォーム

<?xml version="1.0" encoding="UTF-8"?>
<form>
  <fieldset name="image-fieldset">
    <field name="media_manager_or_url"
          type="list"
          label="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_MEDIA_MANAGER_OR_URL_LABEL"
          description="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_MEDIA_MANAGER_OR_URL_DESCRIPTION"
          default="0"
          >
            <option value="0">MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_MEDIA_MANAGER</option>
            <option value="1">URL</option>
    </field>
    <field name="media-manager-images-subform"
            label= "MOD_KOU_BACKGROUND_IMAGE_WITH_IMAGES_SUBFORM_LABEL"             
            description= "MOD_KOU_BACKGROUND_IMAGE_WITH_IMAGES_SUBFORM_DESCRIPTION"
            type= "subform"
            min= "1"
            max= "1000"
            required= "true"
            formsource= "/modules/mod_kou_background_image_with_text/xml/media_manager_images_subform.xml"
            multiple= "true"
            buttons= "add,remove"
            layout="joomla.form.field.subform.repeatable"
            groupByFieldset="false"            
  />       
    <field name="url-images-subform"
            label= "MOD_KOU_BACKGROUND_IMAGE_WITH_IMAGES_SUBFORM_LABEL"             
            description= "MOD_KOU_BACKGROUND_IMAGE_WITH_IMAGES_SUBFORM_DESCRIPTION"
            type= "subform"
            min= "1"
            max= "1000"
            required= "true"
            formsource= "/modules/mod_kou_background_image_with_text/xml/url_images_subform.xml"
            multiple= "true"
            buttons= "add,remove"
            layout="joomla.form.field.subform.repeatable"
            groupByFieldset="false"
            showon="media_manager_or_url:1"
  />          
  </fieldset>
</form>

セカンダリサブフォーム

<?xml version="1.0" encoding="UTF-8"?>
<form>
  <fieldset name="media-manager-or-url-fieldset">
    <field name="image"
          type="media"
          label="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_IMAGE_LABEL"
          description="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_IMAGE_DESCRIPTION"
          showon="media_manager_or_url:0"
          />       
    </field>
    <field  name="url"
            type="url"
            label="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_URL_LABEL"
            description="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_URL_DESCRIPTION"
            showon="media_manager_or_url:1"            
    />
    <field  name="real-size"
            type="text"
            label="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_REAL_SIZE_LABEL"
            description="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_REAL_SIZE_DESCRIPTION"            
    />
    <field  name="size"
            type="text"
            label="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_SIZE_LABEL"
            description="MOD_KOU_BACKGROUND_IMAGE_WITH_TEXT_SIZE_DESCRIPTION"            
    />               
  </fieldset>
</form>

最初のロジックではないサブフォームパーツにフォームを分割することで、JavaScriptを使用せずにこの結果を達成することができました。

わずかな欠点は、4つの要素を持つ1つのサブフォームを使用する代わりに、3つの要素を持つ2つのサブフォームを使用する必要があったことです。私にとっては同じものだったので、このコピーと貼り付けの作業は簡単で、Joomlaだけを使用して問題を解決しました。芯。

3
Eoin