request->filter; $addresses = AddressModel::search($filter); $this->layout()->set("addresses", $addresses); $this->layout()->set("filter", $filter); $this->layout()->set("request", $this->request); } protected function addAction() { $this->layout()->setTemplate("Address/Form"); } protected function editAction() { $address = new Address($this->request->id); $this->layout()->set("address", $address); if(!$address->id) { $this->layout()->setFlash("Addresse nicht gefunden", "error"); return $this->addAction(); } $parents = AddressModel::search(['parent_id' => 0]); $this->layout()->set("parents", $parents); return $this->addAction(); } protected function saveAction() { $r = $this->request; //var_dump($r->get());exit; $id = $r->id; if(is_numeric($id) && $id > 0) { $mode = "edit"; $address = new Address($id); if(!$address->id) { $this->layout()->setFlash("Addresse nicht gefunden", "error"); $this->redirect("Address"); } } else { $mode = "add"; } //var_dump($r->addresstypes);exit; $data = []; $data['parent_id'] = $r->parent_id; $data['company'] = $r->company; $data['firstname'] = $r->firstname; $data['lastname'] = $r->lastname; $data['street'] = $r->street; $data['zip'] = $r->zip; $data['city'] = $r->city; $data['country'] = $r->country; $data['phone'] = $r->phone; $data['fax'] = $r->fax; $data['mobile'] = $r->mobile; $data['email'] = $r->email; $data['note'] = $r->note; $data['edit_by'] = 1; if($mode == "add") { $data['create_by'] = 1; $address = AddressModel::create($data); } else { $address->update($data); } //var_dump($address);exit; $new_id = $address->save(); if(!$new_id) { $this->layout()->setFlash("Fehler beim Speichern", "error"); $this->layout()->set("address", $address); return $this->add(); } $new_types = $r->addresstypes; if(is_array($new_types)) { foreach($address->types as $existing_type) { //var_dump($existing_type); //var_dump($new_types); echo $existing_type->type; if(!in_array($existing_type->type, $new_types)) { $existing_type->delete(); } else { // remove existing type from new_types array (dont need to create again) $new_types = array_diff($new_types, [$existing_type->type]); //unset($new_types[$existing_type]); } } //exit; foreach($new_types as $type) { $type_object = AddresstypeModel::create(['address_id' => $address->id, 'type' => $type]); $type_object->save(); $address->types[$type] = $type_object; } } $this->layout()->setFlash("Adresse erfolgreich gespeichert.", "success"); $this->redirect("Address", "Edit", ['id' => $new_id]); } }