Според мен (/View/Tests/admin_edit.ctp) искам да редактирам няколко реда (от различен модел), като насоча формуляра към QsetsController и действието „admin_order“, след което използвам saveMany($this->request->data)
, за да актуализирам всички промени.
/View/Tests/admin_edit.ctp:
echo $this->Form->create( 'Qset', array('action'=>'order', 'admin'=>1));
$n = 1;
foreach ($qsets as $qset) : ?>
<h3>Question set <?php echo $n; $n++;?></h3>
<?php echo $this->Form->input('Qset.'.$n.'.order'); ?>
<?php echo $this->Form->input('Qset.'.$n.'.id', array('type'=>'hidden') ); ?>
...
$n++;
endforeach;
echo $this->Form->end('save');
/Controller/QsetsController.php
public function admin_order() {
$data = $this->request->data; //maybe just $this->data ?
$this->Qset->saveAll($data);
$this->Session->setFlash( "Order saved.");
$this->redirect( Controller::referer() );
}
В момента данните ми не се запазват (въпреки че няма грешки). Освен това само първият вход, отразен от цикъла foreach, се появява с правилна стойност на полето order
. Всяка следваща няма никаква стойност.
Актуализация: Промених $n = 1
на $n = 0
и сега първият И втори вход се появяват с правилните стойности на реда.
update2: Маркирането за формуляра започва така:
<form action="/admin/qsets/order" id="QsetOrderForm" method="post" accept-charset="utf-8">
Маркировката за полетата за въвеждане, които изглеждат правилни:
<div class="input number"><label for="Qset2Order">Order</label>
<input name="data[Qset][2][order]" type="number" value="3" id="Qset2Order">
</div>
Маркирането, което се получава за празните полета за въвеждане:
<div class="input number"><label for="Qset3Order">Order</label>
<input name="data[Qset][3][order]" type="number" id="Qset3Order">
</div>
Актуализация 3: Реших проблема с въвеждането, което не се показва правилно! Забележете, че увеличавах $n
преди да повторя входовете, така че това създаваше дубликати в края на цикъла. Преместих $n++
след входовете и сега те се показват правилно. уф. Сега просто трябва да ги накарам да спасят.
Полезни препратки:
Глава от книгата за торти на saveMany() /saveAll()
Подобен въпрос