Php Laravel 4-筛选结果和缓存

Php Laravel 4-筛选结果和缓存,php,laravel,caching,routes,Php,Laravel,Caching,Routes,我正在创建一个电子商务系统。我在控制器中有一个getCategories()函数。这个函数可以工作,但我尝试扩展它的功能,以便它根据过滤器返回适当的视图 假设用户正在查看特定类别。每个类别都包含产品,我试图根据产品的品牌为其创建一个过滤器。例如,如果用户属于“吉他”类别,他应该能够根据现有品牌“吉布森”过滤其产品 因此,我实现了上述场景,但我不确定这是否非常有效。我创建了一个链接: @foreach($brand as $key => $value) <a href="/stor

我正在创建一个电子商务系统。我在控制器中有一个
getCategories()
函数。这个函数可以工作,但我尝试扩展它的功能,以便它根据过滤器返回适当的视图

假设用户正在查看特定类别。每个类别都包含产品,我试图根据产品的品牌为其创建一个过滤器。例如,如果用户属于“吉他”类别,他应该能够根据现有品牌“吉布森”过滤其产品

因此,我实现了上述场景,但我不确定这是否非常有效。我创建了一个链接:

@foreach($brand as $key => $value)
  <a href="/store/categories/{{$category->slug}}?brand={{$value->slug}}">{{$value->name}}</a>
@foreach
$brandflag
最初设置为
false
,如果存在,则将其值更改为
true
。如果
$brandflag
更改为
true
,还可以使用另一个
if
向视图返回不同的数据

if ($brandflag == true) {
    $b = Brand::whereSlug($brand_input)->first();
    $products = Product::where('brand_id','=', $b->id)->whereIn('category_id', $children->lists('id'));
    return View::make('store.categories')
        ->with('products', $products->paginate(6))
        ->with('ranges', $ranges)
        ->with('brandfilter', $brandfilter)
        ->with('category', $main)
        ->with('brands', $brands)
        ->with('children', $children_array)
        ->with('seo', $seo);
}
但是,当我缓存类别路由时,上述所有操作都不起作用,因为它将缓存视图,并且它将引用该缓存文件。在
之后传递的任何内容都将被忽略

Route::get('categories/{slug}', array(
    'as' => 'store.categories',
    'uses' => 'StoreController@getCategories'
))->where('slug', '(.*)?')->before('cache.fetch')->after('cache.put');

我应该如何清理/修复代码以使此功能正常工作并能够缓存类别

我假设
cache.put
cache.fetch
过滤器是基于

在他的示例中,作者使用
$request->url()
构建缓存键。此方法不包含查询字符串的状态


为了使缓存与查询参数一起工作,您必须将对
url()
的调用替换为
fullUrl()
,或
url()
query()

的组合。我只是想做一个注释,因为我不是100%确定。我不认为这是一个明智的页面缓存。此页面有机会不断更改,因此它不是理想的缓存点。您希望缓存不经常更改且不接受许多参数的页面。这就是缓存的意义所在。
Route::get('categories/{slug}', array(
    'as' => 'store.categories',
    'uses' => 'StoreController@getCategories'
))->where('slug', '(.*)?')->before('cache.fetch')->after('cache.put');