Является ли новый атрибут showon только для фоновых форм?

Я попытался использовать атрибут поля формы showon в интерфейсной форме без каких-либо результатов.

Даже приведенный здесь пример не работает: https://docs.joomla.org/Form_field#Showon

Что-то не хватает, мне нужно включить определенный скрипт вручную, когда я хочу использовать его в интерфейсе?

Я использую joomla 3.4.1, front end - это шаблон T3, если это имеет значение.

Любые идеи или решения?

EDIT: Форма

<?xml version="1.0" encoding="utf-8"?>
<form>
    <fieldset name="main">  
        <field name="foo" type="list"  >
            <option value="1">JYES</option>
            <option value="0">JNO</option>
        </field>

        <field name="bar" type="text" showon="foo:1" />

        <field name="foo2" type="text"  />

        <field name="bar2" type="text" showon="foo2:1" />
    </fieldset>  
</form>

Шаблон

<?php
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');

?>

<form action="...>"
      method="post" 
    onsubmit="return false;" 
    name="adminForm" id="adminForm" class="form-validate">
    <div class="form-horizontal adminform">
        <fieldset class="">
            <legend><?php echo 'test'; ?></legend>
                <div class="span6">
                    <?php foreach ($this->form->getFieldset() as $field): ?>
                        <div class="control-group">
                            <div class="control-label"><?php echo $field->label; ?></div>
                            <div class="controls"><?php echo $field->input; ?></div>
                        </div>
                    <?php endforeach; ?>
                </div>
        </fieldset>
    </div>
    <?php echo JHtml::_('form.token'); ?>
</form>

РЕДАКТИРОВАТЬ 2: Найден решение в основных файлах joomla

, если приведенный выше код шаблона обновлен:

<div class="span6">
    <?php foreach ($this->form->getFieldset() as $field): ?>
        <div class="control-group">
            <div class="control-label"><?php echo $field->label; ?></div>
            <div class="controls"><?php echo $field->input; ?></div>
        </div>
    <?php endforeach; ?>
</div>

To:

<div class="span6">
    <?php foreach ($this->form->getFieldset() as $field): ?>
        <?php
        $class = '';
        $rel = '';
        if ($showon = $field->getAttribute('showon')) {
            JHtml::_('jquery.framework');
            JHtml::_('script', 'jui/cms.js', false, true);
            $id = $this->form->getFormControl();
            $showon = explode(':', $showon, 2);
            $class = ' showon_' . implode(' showon_', explode(',', $showon[1]));
            $rel = ' rel="showon_' . $id . '[' . $showon[0] . ']"';
        }
        ?>
        <div class="control-group<?php echo $class; ?>"<?php echo $rel; ?>>
            <div class="control-label"><?php echo $field->label; ?></div>
            <div class="controls"><?php echo $field->input; ?></div>
        </div>
    <?php endforeach; ?>
</div>

работает

Я должен вручную добавлять эту часть вручную?

В документе ничего не говорится об этом, мне нужно загрузить файл cms.js вручную и самостоятельно создать элемент control-grouptag? Кажется странным

7 голосов | спросил Andreas 11 Mayam15 2015, 00:39:19

2 ответа


2

Я думаю, что это проблема, связанная с системным ядром. Ваш шаблон /Joomla не загружает JS для этой функции, просто добавьте JS /media/jui/js/cms.js в ваш контроллер, где вы загружаете форму.

рассматривает

ответил Lanah 11 Mayam15 2015, 10:31:34
2

Он должен работать до тех пор, пока ваша форма создается с помощью JForm. Если вы сами создаете свой HTML-код для формы, вам может потребоваться вручную добавить необходимый код и разметку. Попробуйте визуализировать поле, используя <?php echo $this->form->renderField('title'); ?> или в случае foreach вы можете использовать <?php echo $this->form->renderField($field->fieldname); ?> Это, похоже, работает в моем случае.

ответил Bakual 27 Maypm15 2015, 16:17:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132