protected function saveAction($categoryID = 0, $id = 0) { $url = '/categories/' . $categoryID . '/elements'; if ($id) { $action = '/edit/' . $id; $element = Elements::findFirst($id); if (!$element) { $this->flash->error("Element not found"); return $this->response->redirect($url); } } else { $action = '/new'; $element = new Elements; } $form = new ElementForm; $data = $this->request->getPost(); if (!$form->isValid($data, $element)) { foreach ($form->getMessages() as $message) { $this->flash->error($message); } return $this->response->redirect($url . $action); } $isSaved = $element->save(); try { if($element->id) { # Deleting old tags $elementsHashtags = ElementsHashtags::find([ "elements_id = :id:", "bind" => ['id' => $element->id . '%'], "bindTypes" => ['id' => Column::BIND_PARAM_INT] ]); foreach ($elementsHashtags as $elementHashtags) { $elementHashtags->delete(); } # Creating new tags if(!empty($data['tags'])) { foreach ($data['tags'] as $tagID) { $elementHashtags = new ElementsHashtags; $elementHashtags->elements_id = $element->id; $elementHashtags->hashtags_id = $tagID; $elementHashtags->save(); } } } } catch (Exception $e) { $this->flash->error($e->getMessage()); } if ($isSaved == false) { foreach ($element->getMessages() as $message) { $this->flash->error($message); } return $this->response->redirect($url . $action); } $form->clear(); $this->flash->success("Элемент успешно сохранен"); return $this->response->redirect($url); }