eZ\Publish\Core\Search\Common\FieldNameResolver::getFieldNames PHP Method

getFieldNames() public method

The method will check for custom fields if given $criterion implements CustomFieldInterface. With optional parameters $fieldTypeIdentifier and $name specific field type and field from its Indexable implementation can be targeted.
See also: eZ\Publish\API\Repository\Values\Content\Query\CustomFieldInterface
See also: eZ\Publish\SPI\FieldType\Indexable
Deprecation: since 6.2, use getFieldTypes instead
public getFieldNames ( eZ\Publish\API\Repository\Values\Content\Query\Criterion $criterion, string $fieldDefinitionIdentifier, null | string $fieldTypeIdentifier = null, null | string $name = null ) : string[]
$criterion eZ\Publish\API\Repository\Values\Content\Query\Criterion
$fieldDefinitionIdentifier string
$fieldTypeIdentifier null | string
$name null | string
return string[]
    public function getFieldNames(Criterion $criterion, $fieldDefinitionIdentifier, $fieldTypeIdentifier = null, $name = null)
    {
        $fieldTypeNameMap = $this->getFieldTypes($criterion, $fieldDefinitionIdentifier, $fieldTypeIdentifier, $name);
        return array_keys($fieldTypeNameMap);
    }

Usage Example

示例#1
0
 /**
  * Resolves the targeted fields for this criterion.
  *
  * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $criterion
  *
  * @return array
  */
 protected function getTargetFieldNames(Criterion $criterion)
 {
     if ($criterion->target != null) {
         return $this->fieldNameResolver->getFieldNames($criterion, $criterion->target, $this->fieldTypeIdentifier, $this->fieldName);
     }
     $targetFieldNames = array();
     foreach ($this->contentTypeHandler->getSearchableFieldMap() as $fieldDefinitions) {
         foreach ($fieldDefinitions as $fieldIdentifier => $fieldDefinition) {
             if (!isset($fieldDefinition['field_type_identifier'])) {
                 continue;
             }
             if ($fieldDefinition['field_type_identifier'] != $this->fieldTypeIdentifier) {
                 continue;
             }
             $solrFieldNames = $this->fieldNameResolver->getFieldNames($criterion, $fieldIdentifier, $this->fieldTypeIdentifier, $this->fieldName);
             $targetFieldNames = array_merge($targetFieldNames, $solrFieldNames);
         }
     }
     return array_values(array_unique($targetFieldNames));
 }
All Usage Examples Of eZ\Publish\Core\Search\Common\FieldNameResolver::getFieldNames