Witam, mam problem z edycją danych w cakephp, mianowicie, próbuje stworzyć prosty system aktywnych miejsc w sali. Podczas tworzenie sali wybieramy ilość rzędów i miejsc w tym rzędzie, po czym tworzy nam się kwadrat o podanych proporcjach(wypełnienie tabeli seats danymi domyślnie status = 1, czyli miejsce dostępne). Następnie ustawiamy, które miejsca mają być zablokowane poprzez odznaczenie tych miejsc(checkbox zmiana status z 1 na 0), wszystko było by dobrze, gdyby nie fakt że zapisuje tylko ostatnią pozycje z edytowanego miejsca.
Controller sali
var $uses = array('Hall', 'Seat');
public function add()
{
if($this->request->is('post'))
{
$this->Hall->create();
if($this->Hall->save($this->request->data))
{
$id = $this->Hall->id;
$this->Seat->create();
$rzedy = $this->request->data('Hall.count_rows');
$miejsca = $this->request->data('Hall.count_seats');
$ilosczapisow= 0;
for($i = 1 ; $i <= $rzedy ; $i++)
{
for($j = 1 ; $j <= $miejsca ; $j++)
{
$this->Seat->set('num_rown',$rzedy);
$this->Seat->set('num_seat',$miejsca);
$this->Seat->set('Halls_id',$id);
$this->Seat->set('status',1);
if($this->Seat->save())
$ilosczapisow ++;
if($i != $rzedy || $j != $miejsca)
$this->Seat->create();
}
}
$this->Flash->success(' OK ');
$this->redirect('test/'.$id);
}
else
{
$this->Flash->error('Error');
}
}
}
// Funkcja do edycji miejsc
public function test($id = null) {
$hall_seat = $this->Seat->find('all', array( 'conditions' => array('Seat.halls_id' => array($id)))); $this->set('seats',$hall_seat);
if($this->request->is(array('put'))) {
if($this->Seat->saveAll($this->data))
{
$this->Flash->success('Data saved');
$this->redirect('test/'.$id);
}
else
$this->Flash->error('Error');
}
Widok test
echo $this->Form->create('Seat', array('type' => 'put')); foreach($seats as $seat) {
if($seat['Seat']['status'] == 1 )
echo $this->Form->checkbox('Seat.status', array("checked" => "checked"));
else
echo $this->Form->checkbox('Seat.status');
echo $this->Form->input('id', array('value' => $seat['Seat']['id'])); }
echo $this->Form->end('Save');
Baza danych wygląda nast:
Halls (id,name,count_rows,count_seat),
Seats(id,num_rown,num_seat,Halls_id,status) gdzie
public $belongsTo = array( 'className' => 'Halls',
'foreignKey' => 'Halls_id',)
Jestem dopiero początkujący w tym temacie ,więc miłą widziana wyrozumiałość jeśli to będzie jakaś trywialna rzecz.