0

私は最新バージョンのcakephpを使用しており、次のコードを使用してチェックボックスのリストを作成する必要があります。

echo $this->Form->input('regions', array(
    'type'        => 'select',
    'hiddenField' => false,
    'options'     => $regions,
    'multiple'    => 'checkbox',
    'div'         => false
));

コードは90%動作します、つまり...リストは作成されましたが、まだ表示されています<div>

結果は次のとおりです。

<div class="checkbox"><input type="checkbox" name="data[regions][]" value="1" id="Regions1" /><label for="Regions1">AAAA</label></div>
<div class="checkbox"><input type="checkbox" name="data[regions][]" value="2" id="Regions2" /><label for="Regions2">BBBB</label></div>
<div class="checkbox"><input type="checkbox" name="data[regions][]" value="3" id="Regions3" /><label for="Regions3">CCCC</label></div>

必要な結果は次のとおりです。

<li>
<input type="checkbox" name="data[regions][]" value="1" id="Regions1" /><label for="Regions1">AAAA</label>
</li>
...

どうすればいいですか?

4

4 に答える 4

1

もっと簡単な方法があるはずですが、いつでも従来の方法でそれを行うことができます:)

while (list($key, $value) = each($regions)){
    echo '<li>'.
        $this->Form->input($value, 
             array(
                'type' => 'checkbox', 
                'name' => 'data[regions][]', 
                'div' => false,
                'value' => $key,
                'label' => false, 
                'after' => $this->Form->label($value, $value)
             ))
    .'</li>';
}

それほど美しくはありませんが、機能します:)

于 2013-02-11T14:54:16.383 に答える
1

を設定'div' => falseすることにより、入力セクション全体(つまりチェックボックスのセット)の周りに<div>が作成されないようにします。しかし、明らかにあなたはオプションの周りのdivを無効にしたいです。残念ながら、Cakeでこれを無効にする方法を見つけることができませんでした。

ただし、CSSのトリックを使用して<li>アイテムをシミュレートできます。divの入力を特別なクラス(現在行っているのとは逆)でカプセル化し、CSSを使用して<li>スタイルを強制的に使用します。

CSSで:

.box2li div
{
  display: list-item;
}  

ケーキビュー:

echo $this->Form->input('regions', array(
    'type'        => 'select',
    'hiddenField' => false,
    'options'     => $regions,
    'multiple'    => 'checkbox',
    'div'         => array ('class' => 'box2li')
));

各チェックボックスの前に...

  • ...銃弾

  • 于 2013-02-11T15:13:16.703 に答える
    0

    フォーム->入力の代わりにフォーム->チェックボックスを使用する

    $this->Form->checkbox('', array(
      'label' => false, 
      'div' => false,
      'class' => ''
    )); 

    于 2015-02-10T06:43:37.120 に答える
    0

    $this->Form->checkbox('', array(
      'label' => false, 
      'div' => false,
      'class' => ''
    )); 

    $this->Form->checkbox('', array(
      'label' => false, 
      'div' => false,
      'class' => ''
    )); 

    于 2016-01-07T10:31:31.457 に答える