新しい 'showon'属性はバックエンドフォーム専用ですか?


7

フロントエンドフォームでshowonフォームフィールド属性を使用してみましたが、機能しませんでした。

ここに示した例でも機能していません:https : //docs.joomla.org/Form_field#Showon

不足しているものはありますか?フロントエンドで使用する場合、特定のスクリプトを手動で含める必要がありますか?

私はjoomla 3.4.1を使用しています。問題がある場合に備えて、フロントエンドはT3テンプレートです。

アイデアや解決策はありますか?

編集:フォーム

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

に:

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

できます

だから私はいつもこの部分を手動で追加することになっていますか?

Docuはこれについて何も述べていません、私は手動でcms.jsファイルをロードして自分でcontrol-grouptagを構築する必要がありますか?奇妙に見える


使用しているコードを教えてください。
Lodder

私はフォームとtmplコードを追加しました
Andreas

回答:


2

それはシステムコアに関連する問題だと思います、あなたのテンプレート/ Joomlaはその機能のためにJSをロードせず、/media/jui/js/cms.jsフォームをロードするコントローラーにJS を追加するだけです。

よろしく


スクリプトだけを追加しても機能しません。また、EDIT 2が示すように、実際にコードを追加して正しい親コントロールグループdivを作成する必要もあります。どちらのアクションもドキュメントに記載されていません。
Andreas

2

JFormを使用してフォームが生成されている限り、機能します。フォームのHTMLを自分で作成する場合は、必要なコードとマークアップを手動で追加する必要がある場合があります。を使用して、<?php echo $this->form->renderField('title'); ?>または使用できるforeachの場合にフィールドをレンダリングしてみてください<?php echo $this->form->renderField($field->fieldname); ?> これは私の場合はうまくいくようです。


時間があれば息子のようにやってみます。ほとんどのチュートリアルで示されているように、「標準」の方法でフォームを生成します。そして、私はそれを以前に一度使ってみて、試してみて、それらのフープを必要としなかったと確信しています。私はそれが更新に関係しているのではないかと考えています(実際には現時点では推測のみです)。このJoomlaはかつて3.0でしたが、時間の経過とともに3.4に更新されました
Andreas

更新によって違いが生じることはありません。ただし、JFormを使用してフォームを生成すると、違いが生じます。
バクーアル2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.