public function save($instance) { $this->propertiesInstance = $this->getPropertiesInstance($instance); $this->propertiesInstance['alias'] = 'a'; $this->Model->setPropertiesInstance($this->propertiesInstance, $this); $primary = $this->propertiesInstance['primary']; $data = array(); foreach ($this->propertiesInstance['fields'] as $property) { $field = $property->name; $data[$field] = $instance->{$field}; } // Se verifica si el modelo tiene el metodo getFieldsSluggable if ($this->propertiesInstance['has_sluggable']) { // Si en la data existe un campo slug se utiliza en lugar de crearlo if (!array_key_exists('slug', $data)) { $slug = ''; $fields_slug = $instance->getFieldsSluggable(); foreach ($fields_slug as $field_slug) { $slug .= $data[$field_slug] . '-'; } $data['slug'] = \Kodazzi\Tools\StringProcessor::slug($slug); } } // Verifica si el campo primary existe y contiene algun valor if (array_key_exists($this->propertiesInstance['primary'], $data) && $data[$this->propertiesInstance['primary']]) { unset($data[$this->propertiesInstance['primary']]); // Intentara actualizar la instancia en la bd // Verifica que exista el registro en la bd if ($this->Model->exist($instance->{$primary})) { // Retorna la cantidad de filas afectadas. $result = $this->Model->update($data, $instance->{$primary}); $this->identifier = $instance->{$primary}; return true; } throw new \Exception('El objecto con ' . $primary . ' = ' . $instance->{$this}->propertiesInstance['primary'] . ' no fue encontrado en la BD.'); } $result = $this->Model->insert($data); return $result ? true : false; }