Мои коды ниже. У меня есть ProductController для моих продуктов. На странице продукта у меня есть панель поиска Select2 Ajax, которая вызывает APIController. ProductController показывает все продукты (99K). Если я хочу выполнить фильтрацию по конкретному SKU, я могу найти и выбрать продукт. Но я не могу передать эту информацию в мою таблицу, которая находится в ProductController. Если я выбираю Продукт, он ничего не делает и не получает информацию.
ProductController показывает следующую информацию, как на изображении
ProductController показывает все продукты в базе данных, но ограничен 100 на страницу. Но чего я хочу добиться, так это того, чтобы при поиске какого-либо продукта на основе SKU моя таблица со всеми продуктами отображалась скрытой, а список продуктов из Select2 Ajax должен отображаться в режиме реального времени в виде таблицы. Но как мне этого добиться. Не могли бы вы помочь мне / помочь мне, как получить эти результаты или шаги, что мне нужно, чтобы получить результаты, что я хочу.
В моей панели отладки Symfony я вижу, что я получаю определенный ответ JSON от API, но я не могу передать эту информацию обратно в мой ProductController и не показать ее в виде таблицы.
ProductController
/**
* @Route("/product/all")
*/
public function getPage(Request $request)
{
$products = $this->productRepository->getProducts();
$query = $request->get('term');
return $this->render(
'@app_bar/Product/productList.twig',
[
'products' => $products,
]
);
}
ApiController
/**
* @Route("/api/search")
*/
public function viewActionSearch(Request $request)
{
$query = $request->get('term');
$result = [
'results' => [],
];
if ($query !== null){
$products = $this->productRepository->searchProduct($query);
$result['results'];
foreach ($products as $product) {
$result['results'][] = [
'id' => $product['id'],
'text' => $product['name'],
];
}
} else {
$products = $this->productRepository->pagination(1);
foreach ($products as $entity) {
$result['results'][] = [
'id' => $entity['id'],
'text' => $entity['name'],
];
}
}
return new JsonResponse($result);
}
Javascript
<script>
$('.ajax').select2({
ajax: {
url: '/product/api/search',
dataType: 'json',
}
});
</script>