Glue API - Catalog Search feature integration
Edit on GitHubInstall feature API
Prerequisites
To start feature integration, overview and install the necessary features:
Name | Version |
---|---|
Spryker Core | 2018.12.0 |
Search | 2018.12.0 |
1) Install the required modules
Run the following command to install the required modules:
composer require spryker/catalog-search-rest-api:"^2.1.0" spryker/catalog-search-products-resource-relationship:"^1.1.0" --update-with-dependencies
Verification
Make sure that the following modules are installed:
Module | Expected Directory |
---|---|
CatalogSearchRestApi |
vendor/spryker/catalog-search-rest-api |
CatalogSearchProductsResourceRelationship |
vendor/spryker/catalog-search-products-resource-relationship |
2) Set up Transfer objects
Run the following commands to generate transfer changes:
console transfer:generate
Verification
Make sure that the following changes in transfer objects have occurred:
Transfer | Type | Event | Path |
---|---|---|---|
RestCatalogSearchAttributesTransfer |
class | created | src/Generated/Shared/Transfer/RestCatalogSearchAttributesTransfer |
RestCatalogSearchSortTransfer |
class | created | src/Generated/Shared/Transfer/RestCatalogSearchSortTransfer |
RestCatalogSearchPaginationTransfer |
class | created | src/Generated/Shared/Transfer/RestCatalogSearchPaginationTransfer |
RestCatalogSearchAbstractProductsTransfer |
class | created | src/Generated/Shared/Transfer/RestCatalogSearchAbstractProductsTransfer |
RestCatalogSearchProductImageTransfer |
class | created | src/Generated/Shared/Transfer/RestCatalogSearchProductImageTransfer |
RestRangeSearchResultTransfer |
class | created | src/Generated/Shared/Transfer/RestRangeSearchResultTransfer |
RestFacetSearchResultTransfer |
class | created | src/Generated/Shared/Transfer/RestFacetSearchResultTransfer |
RestCatalogSearchSuggestionsAttributesTransfer |
class | created | src/Generated/Shared/Transfer/RestCatalogSearchSuggestionsAttributesTransfer |
RestCatalogSearchSuggestionAbstractProductsTransfer |
class | created | src/Generated/Shared/Transfer/RestCatalogSearchSuggestionAbstractProductsTransfer |
RestCatalogSearchSuggestionProductImageTransfer |
class | created | src/Generated/Shared/Transfer/RestCatalogSearchSuggestionProductImageTransfer |
RestPriceProductTransfer |
class | created | src/Generated/Shared/Transfer/RestPriceProductTransfer |
PriceModeConfigurationTransfer |
class | created | src/Generated/Shared/Transfer/PriceModeConfigurationTransfer |
RestCurrencyTransfer |
class | created | src/Generated/Shared/Transfer/RestCurrencyTransfer |
RestFacetConfigTransfer |
class | created | src/Generated/Shared/Transfer/RestFacetConfigTransfer |
3) Set up behavior
Enable resources and relationships
Implementation Activate the following plugins:
Plugin | Specification | Prerequisites | Namespace |
---|---|---|---|
CatalogSearchAbstractProductsResourceRelationshipPlugin |
Adds the abstract product resource relationship to search results. | None | Spryker\Glue\CatalogSearchProductsResourceRelationship\Plugin |
CatalogSearchSuggestionsAbstractProductsResourceRelationshipPlugin |
Adds the abstract product resource relationship to search suggestions results. | None | Spryker\Glue\CatalogSearchProductsResourceRelationship\Plugin |
CatalogSearchResourceRoutePlugin |
Registers the search resource. |
None | Spryker\Glue\CatalogSearchRestApi\Plugin\CatalogSearchResourceRoutePlugin |
CatalogSearchSuggestionsResourceRoutePlugin |
Registers the search-suggestions resource. |
None | Spryker\Glue\CatalogSearchRestApi\Plugin\CatalogSearchSuggestionsResourceRoutePlugin |
src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php
<?php
namespace Pyz\Glue\GlueApplication;
use Spryker\Glue\CatalogSearchProductsResourceRelationship\Plugin\CatalogSearchAbstractProductsResourceRelationshipPlugin;
use Spryker\Glue\CatalogSearchProductsResourceRelationship\Plugin\CatalogSearchSuggestionsAbstractProductsResourceRelationshipPlugin;
use Spryker\Glue\CatalogSearchRestApi\CatalogSearchRestApiConfig;
use Spryker\Glue\CatalogSearchRestApi\Plugin\CatalogSearchResourceRoutePlugin;
use Spryker\Glue\CatalogSearchRestApi\Plugin\CatalogSearchSuggestionsResourceRoutePlugin;
use Spryker\Glue\GlueApplication\GlueApplicationDependencyProvider as SprykerGlueApplicationDependencyProvider;
class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependencyProvider
{
/**
* @return \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRoutePluginInterface[]
*/
protected function getResourceRoutePlugins(): array
{
return [
new CatalogSearchResourceRoutePlugin(),
new CatalogSearchSuggestionsResourceRoutePlugin(),
];
}
/**
* @param \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface $resourceRelationshipCollection
*
* @return \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface
*/
protected function getResourceRelationshipPlugins(
ResourceRelationshipCollectionInterface $resourceRelationshipCollection
): ResourceRelationshipCollectionInterface {
$resourceRelationshipCollection->addRelationship(
CatalogSearchRestApiConfig::RESOURCE_CATALOG_SEARCH,
new CatalogSearchAbstractProductsResourceRelationshipPlugin()
);
$resourceRelationshipCollection->addRelationship(
CatalogSearchRestApiConfig::RESOURCE_CATALOG_SEARCH_SUGGESTIONS,
new CatalogSearchSuggestionsAbstractProductsResourceRelationshipPlugin()
);
return $resourceRelationshipCollection;
}
}
Verification
Make sure the following endpoints are available:
Make a request to `https://glue.mysprykershop.com/catalog-search?q={{q_term}}&include=abstract-products`. Make sure the response includes relationships to `abstract-products` resources.
Make a request to `https://glue.mysprykershop.com/catalog-search-suggestions?q={{q_term}}&include=abstract-products`. Make sure the response includes relationships to `abstract-products` resources.
Last review date: Apr 10, 2019
Thank you!
For submitting the form