2013-01-20 2 views
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> 

Каков наилучший способ достичь этого?

ответ

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 
) 
+0

Спасибо за ваш ответ, повел меня решить проблему :) –

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')); 
Смежные вопросы