Skip to content

Commit

Permalink
Fixes for cached search views
Browse files Browse the repository at this point in the history
  • Loading branch information
Cocoa committed Mar 27, 2024
1 parent 337b856 commit 726ca41
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 9 deletions.
20 changes: 13 additions & 7 deletions app/Http/Controllers/SearchController.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,19 @@
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\App;
use App\Http\Requests\Api\SearchRequest;
use App\Http\Controllers\Api\SearchController as ApiSearchController;


use Illuminate\Support\Facades\Log;
class SearchController extends Controller
{
public function index(SearchRequest $request)
{
$items = $this->post($request);
$filters = $this->get_or_make_filters($request);

return view('search', ['fitlers' => $filters,'items' => $items]);
return view('search', ['filters' => $filters,'items' => $items]);
}

public function post(SearchRequest $request) {
Expand All @@ -36,21 +37,26 @@ public function post(SearchRequest $request) {
public function get_or_make_filters(SearchRequest $request) {
// Closure so we don't have to edit this multiple places if things change
$make_filters = function() {
return view('components.search-results', ['sections' => [
return view('components.filters', ['sections' => [
'categories' => Category::cached()->sortBy('name'),
'brands' => Brand::cached()->sortBy('name'),
'features' => Feature::cached()->sortBy('name'),
'colors' => Color::cached()->sortBy('name'),
'tags' => Tag::cached()->sortBy('name'),]
]);
])->render();
};

// Check if there are any filters set. If not, we can use cached renders.
if ($request) {
// 'search' doesn't count because it doesn't affect the filter view.
$params = $request->all();
$count = count($params);

if ($count == 0 || ($count == 1 && array_key_exists('search', $params))) {
$locale = App::getLocale();
$filters = Cache::tags(['filters'])->get($locale);
$filters = cache()->tags(['filters'])->get($locale);
if (!$filters) {
$filters = $make_filters();
Cache::tags(['filters'])->forever($locale, $filters);
cache()->tags(['filters'])->forever($locale, $filters);
return $filters;
} else {
return $filters;
Expand Down
4 changes: 2 additions & 2 deletions resources/views/search.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<form method="GET" id="search-form">
<div class="row">
<div class="col-sm-12 col-md-4 col-lg-3 mb-2 mb-3">
{{ $filters }}
{!! $filters !!}
</div>

<div class="col-sm-12 col-md-8 col-lg-9">
Expand All @@ -24,7 +24,7 @@
</div>
</div>
<span id="search-results">
{{ $items }}
{!! $items !!}
</span>
<div class="row text-center p-5" id="search-results-loading" style="display: none">
<div class="col text-center text-muted">
Expand Down

0 comments on commit 726ca41

Please sign in to comment.