Skip to content

Instantly share code, notes, and snippets.

@ianitsky
Last active November 28, 2018 11:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ianitsky/fe7338d34445a36e56301915a2293000 to your computer and use it in GitHub Desktop.
Save ianitsky/fe7338d34445a36e56301915a2293000 to your computer and use it in GitHub Desktop.
Transform json to magento2 search criteria

HOW TO USE

const searchCriteria = {
  sortOrders: [
    {
      field: "status",
      direction: "ASC"
    },
    {
      field: "created_at",
      direction: "DESC"
    }
  ]
}

actions
.searchOrders(searchCriteria)
.then((res) => {
  console.log(res)
})
.catch((error) => {
  console.log(error);
});
import axios from 'axios';
import { sprintf } from 'sprintf-js';
import configApi from './config/configApi';
import createSearchCriteria from './functions/createSearchCriteria';

export function searchOrders(searchCriteria = {}) {
  let url = configApi.searchOrders;
  url = sprintf(url, createSearchCriteria(searchCriteria));
  var config = {
    headers: {'Authorization': "bearer " + localStorage.getItem('admin_key')}
  };
  const doRequest = axios.get(url, config);
  ...
}
export default function createSearchCriteria(searchCriteria) {
const returnArray = serialize(searchCriteria, [], 'searchCriteria');
return returnArray.join('&');
}
function serialize (searchCriteria, array, begin) {
if (typeof searchCriteria === 'object') {
const keys = Object.keys(searchCriteria);
keys.forEach((key) => {
serialize(searchCriteria[key], array, `${begin}[${key}]`);
});
return array;
}
array.push(`${begin}=${searchCriteria}`);
return array;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment