多个输入分组

时间:2013-01-20 00:26:25

标签: php cakephp

所以我有这个表单添加一个报告,我的报告有很多措施。我的问题是,我想将“措施”的显示“拆分”成组(一个措施属于一个组)。

我有这个:

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

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分: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
)

答案 1 :(得分: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'));
相关问题