3

選択ボックスでいくつかのオプションのいずれかが選択されている場合にのみ表示したいフィールドセットがあります。問題は、ORの操作方法がわからないように見えることです。配列に複数の条件を含めると、ANDのように動作します。たとえば、選択ボックスの値が1、2、または3の場合に機能する必要があります。

4

3 に答える 3

5

どうやら drupal 7.14 では「or」と「xor」がサポートされているようです。簡単に見つけられるドキュメントにはありません。誰かがそれを必要とする場合に備えて、私が例として行ったことを次に示します。これは機能します。

$form['survey'] = array(
    '#type' => 'fieldset',
    '#collapsible' => FALSE,
    '#states' => array(
        'visible' => array(
            array(
                array(':input[name="measurementmethod"]' => array('value'=>'5')),
                'xor',
                array(':input[name="measurementmethod"]' => array('value'=>'6')),
                'xor',
                array(':input[name="measurementmethod"]' => array('value'=>'7'))
            )
        )
    )
);
于 2012-10-09T00:32:18.630 に答える
1

doの変更レコード「OR および XOR 構造を許可する条件を修正」への参照

7.14 以降、Drupal フォーム API#stateは OR および XOR 条件をサポートします。

次のコードは、条件を許可します。dependee_1 OR (dependee_2 OR dependee_3) OR (dependee_4 XOR dependee_5)

<?php
  $form['dependent_1']['#states'] = array(
    'disabled' => array(
    // dependee_1 has value ON
      '[name="dependee_1"]' => array('value' => 'ON'),
      array(
      // At least one of dependee_2 or dependee_3 has value ON
        array('[name="dependee_2"]' => array('value' => 'ON')),
        array('[name="dependee_3"]' => array('value' => 'ON')),
      ),
      array(
      // Only one of dependee_4 or dependee_5 can have value ON
        array('[name="dependee_4"]' => array('value' => 'ON')),
        'xor',
        // The field should be disabled when Select #1 has value ON; at least one
        // of Select #2 and Select #3 has value ON; one but only one of Select #4
        // and Select #5 has value ON.
        array('[name="dependee_5"]' => array('value' => 'ON')),
      ),
    )
  );
?>

基本的に、オブジェクト リテラル ({ ... }) 内のすべての要素は AND 演算され、配列リテラル ([ ... ]) 内のすべての要素は OR 演算されます。配列の最初の要素が「xor」の場合、条件は XOR されます。

于 2013-09-25T13:16:12.633 に答える