2

したがって、レポートを追加するためのこのフォームがあり、レポートには多くのメジャーがあります。私の問題は、メジャーの表示をグループに「分割」したいことです(メジャーはグループに属します)。

私はこれを持っています:

//Controller/Report/add

$measures = $this->Report->Measure->find('list');

この:

//View/Report/add.ctp

echo $this->Form->input('Measure', array('label' => false, 'multiple' => 'checkbox'));

これは以下を出力します:

<div class="input select">
    <input type="hidden" name="data[Measure][Measure]" value="" id="MeasureMeasure"/>
    <div class="checkbox">
        <input type="checkbox" name="data[Measure][Measure][]" value="1" id="MeasureMeasure1" />
        <label for="MeasureMeasure1">
            ...
        </label>
    </div>

      ....
</div>

ただし、次のようなものが必要です。

<h2>Measure Group 1</h2>
    <div class="input select">
        <input type="hidden" name="data[Measure][Measure]" value="" id="MeasureMeasure"/>
        <div class="checkbox">
            <input type="checkbox" name="data[Measure][Measure][]" value="1" id="MeasureMeasure1" />
            <label for="MeasureMeasure1">
                ...
            </label>
        </div>

          ....
    </div>
<h2>Measure Group 2</h2>
    <div class="input select">
        <input type="hidden" name="data[Measure][Measure]" value="" id="MeasureMeasure"/>
        <div class="checkbox">
            <input type="checkbox" name="data[Measure][Measure][]" value="1" id="MeasureMeasure1" />
            <label for="MeasureMeasure1">
                ...
            </label>
        </div>

          ....
    </div>

これを達成するための最良の方法は何ですか?

4

2 に答える 2

1

リクエストデータをビューに設定するときに編集用のフィールドに事前入力するには少し余分な作業が必要ですが、次のようにすることができます。

echo $this->Form->input('Measure.Measure.group1', array('options'=>$options, 'label' => false, 'multiple' => 'checkbox'));
echo $this->Form->input('Measure.Measure.group2', array('options'=>$options, 'label' => false, 'multiple' => 'checkbox'));

次のようなコントローラーで何かを提供する必要があります。

pr($this->data['Measure']['Measure']['group1']);

array(
   [0] => someval,
   [1] => some other val
)
于 2013-01-20T10:50:22.837 に答える
0

わかりましたので、基本的には解決しました:

$this->loadModel('Measuregroup');
$this->Measuregroup->contain();
$measureGroups = $this->Measuregroup->find('all');
foreach ($measureGroups as $measureGroup) {
    $measures[$measureGroup['Measuregroup']['name']] = 
        $this->Report->Measure->find('list',
            array('conditions' => array(
                'Measure.measuregroup_id' => $measureGroup['Measuregroup']['id'])));
}

そして、これだけのビューで:

echo $this->Form->input('Measure', array('label' => false, 'multiple' => 'checkbox'));
于 2013-01-20T17:27:20.233 に答える