Có phải thuộc tính 'showon' mới chỉ dành cho các hình thức back-end?


7

Tôi đã thử sử dụng thuộc tính trường biểu mẫu showon ở dạng mặt trước mà không có kết quả làm việc.

Ngay cả ví dụ đưa ra ở đây cũng không hoạt động: https : //docs.j Joomla.org/Form_field#Showon

Có thiếu gì không, tôi có phải bao gồm một tập lệnh nhất định bằng tay khi tôi muốn sử dụng nó ở mặt trước không?

Tôi đang sử dụng j Joomla 3.4.1, giao diện người dùng là mẫu T3, trong trường hợp có vấn đề.

Bất kỳ ý tưởng hoặc giải pháp?

EDIT: Mẫu

<?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>

Bản mẫu

<?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>

EDIT 2: Tìm thấy một giải pháp trong các tập tin lõi j Joomla

nếu mã mẫu ở trên được cập nhật từ:

<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>

Đến:

<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>

nó hoạt động

Vậy tôi có nên tự thêm phần này vào lúc nào không?

Docu không nói gì về điều này, tôi cần tải tập tin cms.js bằng tay và tự mình xây dựng nhóm kiểm soát? Có vẻ lạ


Bạn có thể vui lòng hiển thị mã bạn đang sử dụng?
Lodder

Tôi đã thêm biểu mẫu và mã tmpl
Andreas

Câu trả lời:


2

Tôi đoán đó là một vấn đề liên quan đến lõi hệ thống, Mẫu / Joomla của bạn không tải JS cho chức năng đó, chỉ cần thêm JS /media/jui/js/cms.jsvào bộ điều khiển của bạn nơi bạn tải biểu mẫu.

Trân trọng


Chỉ thêm tập lệnh không hoạt động, tôi cũng phải thêm mã để tạo div nhóm điều khiển chính xác như EDIT 2 của tôi hiển thị. Không hành động được mô tả trong tài liệu.
Andreas

2

Nó sẽ hoạt động miễn là biểu mẫu của bạn được tạo bằng JForm. Nếu bạn tự xây dựng HTML cho biểu mẫu, thì bạn có thể phải tự thêm mã và đánh dấu cần thiết. Hãy thử kết xuất trường bằng <?php echo $this->form->renderField('title'); ?>hoặc trong trường hợp foreach bạn có thể sử dụng <?php echo $this->form->renderField($field->fieldname); ?> Điều này dường như hoạt động trong trường hợp của tôi.


Tôi sẽ thử làm con trai khi tôi có thời gian. Tôi tạo biểu mẫu theo cách 'tiêu chuẩn' như được hiển thị trong hầu hết các hướng dẫn. Và tôi chắc chắn rằng tôi đã sử dụng nó một lần trước đây, để dùng thử và không cần những cái vòng đó. Tôi nghi ngờ (thực sự chỉ đoán vào thời điểm này) nó phải làm với các bản cập nhật. Joomla này là bản 3.0 một lần và đã được cập nhật theo thời gian lên 3,4
Andreas

Cập nhật không nên làm cho một sự khác biệt. Tuy nhiên, sử dụng JForm để tạo biểu mẫu sẽ tạo ra sự khác biệt.
Bakual
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.