Joomla showon 屬性

2023-03-10 11:55 更新

showon屬性是表單字段的通用屬性,作用就是通過表單中其他字段的值來決定當(dāng)前字段是否顯示。

基于一個(gè)字段的判斷

下面的代碼實(shí)現(xiàn)當(dāng)自定義登錄頁字段設(shè)置為1時(shí),登錄頁類型才會(huì)展示出來:

<field name="custom_login"
       type="radio"
       class="btn-group btn-group-yesno"
       label="自定義登錄頁"
       description=""
       default="0"
      >
      <option value="1">JYES</option>
      <option value="0">JNO</option>
</field>
<field name="custom_type"
       type="list"
       label="登錄頁類型"
       description=""
       default="menuitem"
       showon="custom_login:1"
      >
      <option value="menuitem">菜單項(xiàng)</option>
      <option value="url">自定義URL</option>
</field>

通過在登陸頁類型字段增加showon屬性,將其值設(shè)置為 custom_login:1 來實(shí)現(xiàn)。 如果想匹配custom_login 的多個(gè)值,那么可以使用逗號分隔。如:showon="custom_login:1,2"

基于多個(gè)字段的判斷

如果需要同時(shí)基于多個(gè)字段的值才能判斷是否顯示。那么可以使用[AND]鏈接多個(gè)字段來實(shí)現(xiàn)

下面的代碼展示了只有當(dāng) 自定義登錄頁設(shè)置為1且登陸頁的類為menuitem時(shí)才會(huì)顯示 登錄菜單字段。

<field name="custom_login"
       type="radio"
       class="btn-group btn-group-yesno"
       label="自定義登錄頁"
       description=""
       default="0"
      >
      <option value="1">JYES</option>
      <option value="0">JNO</option>
</field>
<field name="custom_type"
       type="list"
       label="登錄頁類型"
       description=""
       default="menuitem"
       showon="custom_login:1"
      >
      <option value="menuitem">菜單項(xiàng)</option>
      <option value="url">自定義URL</option>
</field>
 
<field name="custom_menuitem"
       type="menuitem"
       label="選擇菜單項(xiàng)"
       description="重定向到該頁面"
       showon="custom_login:1[AND]custom_type:menuitem"
/><br><br>

注意最后的選擇菜單項(xiàng)字段的 showon="custom_login:1[AND]custom_type:menuitem"

  • 兩個(gè)字段中有一個(gè)條件成立,那么可以使用[OR]鏈接。如: showon="foo:1[OR]bar:1".
  • 通過使用!: 可以實(shí)現(xiàn)不等于的判斷。如: showon="field1!:1"
  • 實(shí)現(xiàn)一個(gè)字段有值即可(無論值為多少,不為空就行)??梢允褂胹howon="foo!:" 

showon屬性不起作用的解決方案

遇到諸如showon屬性根本無法使用的問時(shí)候, 你的可以嘗試使用 renderField() 方法來輸出.字段 代碼如下:

<divclass="row-fluid">
    <divclass="span6">
        <?php
            foreach($this->form->getFieldset()as $field) {
                echo $field->renderField();       
            }
        ?>
    </div>
</div>


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號