Clear list cache after clicking on a star item. #44
@@ -12,11 +12,18 @@ final class StarController extends BaseController
|
|||||||
#[Route('/star/{productId<\d+>}', name: 'app_star')]
|
#[Route('/star/{productId<\d+>}', name: 'app_star')]
|
||||||
public function __invoke(int $productId, Request $request): Response
|
public function __invoke(int $productId, Request $request): Response
|
||||||
{
|
{
|
||||||
if($this->cache->getItem('list_all')->isHit()) {
|
$this->cache->deleteItems(['list_all', 'list_promos', 'list_new', 'list_discontinued']);
|
||||||
$this->cache->deleteItems(['list_all', 'list_promos', 'list_new', 'list_discontinued']);
|
$referer = $request->headers->get('referer');
|
||||||
|
if (str_contains($referer, '/category/')) {
|
||||||
|
preg_match('#/category/(.*)#i', $referer, $matches);
|
||||||
|
$this->cache->deleteItem('list_category_'.urldecode($matches[1]));
|
||||||
|
}
|
||||||
|
if (str_contains($referer, '/search?search=')) {
|
||||||
|
preg_match('#/search\?search=(.*)#i', $referer, $matches);
|
||||||
|
$this->cache->deleteItem('list_search_'.urldecode($matches[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
Product::find($productId)->toggleStarred()->save();
|
Product::find($productId)->toggleStarred()->save();
|
||||||
return $this->redirect($request->headers->get('referer'));
|
return $this->redirect($referer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user