/** * {@inheritDoc} */ public function afterSave(Field $field) { $entity = $field->get('metadata')->get('entity'); $table = TableRegistry::get($entity->source()); $pk = $table->primaryKey(); if ($entity->has($pk)) { $TermsCache = TableRegistry::get('Taxonomy.EntitiesTerms'); $tableAlias = Inflector::underscore($table->alias()); $extra = !is_array($field->extra) ? [$field->extra] : $field->extra; $TermsCache->deleteAll(['entity_id' => $entity->get($pk), 'table_alias' => $tableAlias, 'field_instance_id' => $field->metadata->instance_id]); foreach ($extra as $termId) { Cache::delete("t{$termId}", 'terms_count'); $cacheEntity = $TermsCache->newEntity(['entity_id' => $entity->get($pk), 'term_id' => $termId, 'table_alias' => $tableAlias, 'field_instance_id' => $field->metadata->instance_id]); $TermsCache->save($cacheEntity); } } }
/** * Alters the given $field and fetches incoming POST data, both "value" and * "extra" property will be automatically filled for the given $field entity. * * @param \Field\Model\Entity\Field $field The field entity for which * fetch POST information * @return mixed Raw POST information */ protected function _fetchPost(Field $field) { $post = $field->get('metadata')->get('entity')->get($field->get('name')); // auto-magic if (is_array($post)) { $field->set('extra', $post); $field->set('value', null); } else { $field->set('extra', null); $field->set('value', $post); } return $post; }